60得票5回答
如何在不破坏封装的情况下返回 RefCell 中某个东西的引用?

我有一个具有内部可变性的结构体。 use std::cell::RefCell; struct MutableInterior { hide_me: i32, vec: Vec<i32>, } struct Foo { //although not us...

47得票1回答
Rc<RefCell<T>>和RefCell<Rc<T>>有什么区别?

Rust文档详细介绍了Rc&lt;RefCell&lt;T&gt;&gt;,但没有涉及到RefCell&lt;Rc&lt;T&gt;&gt;,我现在遇到了这个问题。它们是否有效地产生了相同的结果?它们之间有重要的区别吗?

40得票3回答
使用Cell或RefCell的最佳选择情况

当您需要使用Cell或RefCell时是什么情况?似乎有很多其他类型的选择可以替代它们,而文档警告使用RefCell是一种"最后的手段"。 使用这些类型是一种"代码异味"吗?是否有人可以展示一个例子,说明使用这些类型比使用其他类型(如Rc甚至Box)更合适?

22得票1回答
如何正确访问RefCell中的值

我试图理解Rust中的Rc和RefCell。我想要实现的是对同一对象拥有多个可变引用。 我想到了这个虚拟代码:use std::rc::Rc; use std::cell::RefCell; struct Person { name: String, mother: Opti...

16得票1回答
如何借用 RefCell<HashMap>,查找一个键,并返回结果的引用?

我有一个RefCell&lt;HashMap&gt;,想要借用这个表格,查找一个键,并返回结果的引用: use std::cell::RefCell; use std::collections::HashMap; struct Frame { map: RefCell&lt;Has...

15得票3回答
有没有方法让不可变引用变成可变的?

我希望使用 Rust 解决一道力扣问题 (删除链表的倒数第 N 个节点)。我的解法使用两个指针来找到需要移除的 Node:#[derive(PartialEq, Eq, Debug)] pub struct ListNode { pub val: i32, pub next: ...

14得票1回答
API设计中的内部可变性滥用?

我的C++背景让我对内部可变性感到不舒服。 从借用检查器的角度来看,处理每个结构体上的许多引用,这些引用的内部状态可能很快或很久以后会被改变,是不可能的;这显然就是内部可变性可以发挥作用的地方。 此外,在《Rust编程语言》的第15.5章“RefCell和内部可变性模式”中,关于Messe...

11得票2回答
一个具有内部可变性的单元,允许任意突变操作。

标准的Cell结构提供了内部可变性,但只允许一些变异方法,例如set()、swap()和replace()。所有这些方法都会更改Cell的整个内容。 但有时需要更具体的操作,例如仅更改包含在Cell中的某些数据。 因此,我尝试实现一种通用的Cell,允许任意数据操作。 操作由用户定义的闭包表示...

7得票1回答
是否有替代方案或方法来限制X的可变性,同时仍使用Rc<RefCell<X>>?

例如,给出此代码: use std::rc::Rc; use std::cell::RefCell; // Don't want to copy for performance reasons struct LibraryData { // Fields ... } // Cre...