gpt4 book ai didi

rust - 为什么我们不能将 RefCell 用于递归数据结构?

转载 作者:行者123 更新时间:2023-11-29 08:34:27 27 4
gpt4 key购买 nike

为什么我们不能将 RefCell 用于 Rust 中的递归数据结构?

无效:

enum List {
Cons(i32, RefCell<List>),
Nil,
}

有效:

enum List {
Cons(i32, Rc<List>), // or Box<List>
Nil,
}

最佳答案

RefCell 包含内部对象,将其包裹起来,它不是堆分配值。这就是编译器说“无间接递归”的原因:RefCell 不是间接。

另一方面,

BoxRc 包含对分配在别处的对象的引用,因此是间接。 p>

如果没有间接寻址,List 枚举最终会变成无限,因为每个 Cons 都在其 RefCell< 中包含一个完整的 List 枚举

您不能执行将自身包含为值,仅作为指针或引用的递归数据结构。

关于rust - 为什么我们不能将 RefCell 用于递归数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54022450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com