【发布时间】:2023-01-07 00:25:28
【问题描述】:
我正在构建一个包含节点的数据结构,每个节点可能指向另一个节点。 节点之间的指针是使用Rc实现的,像这样:
struct Node {
ptr: Rc<Node>
}
我希望能够通过克隆另一个现有的 Rc 来更改节点的指针“ptr”以指向另一个节点。
let a: Rc<Node> = ...;
let b: Node = ...;
let b.ptr = a.clone();
我的问题是,编译器认为我正在尝试设置价值节点的,即更改 b.ptr 的底层共享对象,我真的想替换指针: 减少b.ptr旧值的refcount,增加a的refcount,改变b.ptr指向a。
我怎样才能做到这一点?
【问题讨论】:
-
不太清楚为什么您认为编译器认为您正在尝试设置节点的值。在您提供的代码中,您实际上只更改了
b.ptr。 -
let b.ptr = ...是无效语法