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