Есть ли способ конвертировать R c<T> в Ar c<T>? - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть узел графа:

pub struct GraphNode<T>
where
    T: Clone,
{
    pub f: GraphLikeFunc<T>,
    pub m: String,
    pub children: Vec<Rc<GraphNode<T>>>,
    id: Uuid,
}

Я пытаюсь преобразовать его в:

pub struct ConcurrentGraphNode<T>
where
    T: Clone,
{
    pub f: GraphLikeFunc<T>,
    pub m: String,
    pub children: Vec<Arc<ConcurrentGraphNode<T>>>,
    id: Uuid,
}

1 Ответ

2 голосов
/ 04 февраля 2020

Вы не можете сделать это, не восстанавливая весь график. Основное различие между Rc и Arc состоит в том, что Rc не реализует Send и Sync, в то время как Arc делает .

Эти гарантии проверяются во время компиляции, поэтому невозможно напрямую переключаться между ними во время выполнения: вам нужно потратить GraphNode, чтобы построить ConcurrentGraphNode с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...