Cell
单线程内部可变性容器,用于在不可变引用中修改值。
let cell = Cell::new(42);
基础
内部可变性
RefCell
单线程内部可变性容器,提供运行时借用检查。
let cell = RefCell::new(value);
let mut borrowed = cell.borrow_mut();
基础
内部可变性
OnceCell
单线程懒初始化容器,只能设置一次值。
let cell = OnceCell::new();
cell.set(value).unwrap();
中级
内部可变性
LazyCell
延迟初始化的单线程Cell,提供按需计算的值。
let lazy = LazyCell::new();
lazy.fill(|| expensive_computation());
中级
内部可变性
Atomic Take
线程安全的一次性提取容器,允许在多线程环境中安全地移出值。
let take = AtomicTake::new(value);
let value = take.take().unwrap();
高级
内部可变性
Critical-Section
提供临界区抽象的内部可变性原语,用于嵌入式系统中的安全共享访问。
static SHARED: CriticalSection> =
CriticalSection::new(Cell::new(0));
critical_section::with(|cs| {
let cell = SHARED.borrow(cs);
cell.set(cell.get() + 1);
}); |
高级
内部可变性