Concurrency 有没有办法转换Rc<;T>;成弧形<;T>;?

Concurrency 有没有办法转换Rc<;T>;成弧形<;T>;?,concurrency,rust,Concurrency,Rust,我有一个图形节点: pub struct GraphNode<T> where T: Clone, { pub f: GraphLikeFunc<T>, pub m: String, pub children: Vec<Rc<GraphNode<T>>>, id: Uuid, } pub结构图节点 哪里 T:克隆, { 酒吧f:GraphLikeFunc, 酒吧m:字符串, 酒吧儿童:Vec,

我有一个图形节点:

pub struct GraphNode<T>
where
    T: Clone,
{
    pub f: GraphLikeFunc<T>,
    pub m: String,
    pub children: Vec<Rc<GraphNode<T>>>,
    id: Uuid,
}
pub结构图节点
哪里
T:克隆,
{
酒吧f:GraphLikeFunc,
酒吧m:字符串,
酒吧儿童:Vec,
id:Uuid,
}
我正在尝试将其转换为:

pub struct ConcurrentGraphNode<T>
where
    T: Clone,
{
    pub f: GraphLikeFunc<T>,
    pub m: String,
    pub children: Vec<Arc<ConcurrentGraphNode<T>>>,
    id: Uuid,
}
pub结构ConcurrentGraphNode
哪里
T:克隆,
{
酒吧f:GraphLikeFunc,
酒吧m:字符串,
酒吧儿童:Vec,
id:Uuid,
}

如果不重建整个图形,则无法执行此操作。
Rc
Arc
之间的主要区别在于
Send
Sync
同时进行


这些保证是在编译时检查的,因此在运行时无法直接在这两者之间切换:您必须使用
GraphNode
从头开始构建
ConcurrentGraphNode

如果不重新构建整个图形,您就无法完成这样的操作。
Rc
Arc
之间的主要区别在于
Send
Sync
同时进行

这些保证是在编译时检查的,因此在运行时无法直接在这两者之间切换:您必须使用
GraphNode
从头开始构建
ConcurrentGraphNode