2 个不稳定版本
0.2.0 | 2022 年 3 月 28 日 |
---|---|
0.1.0 | 2022 年 3 月 12 日 |
#2693 in Rust 模式
7KB
82 行
pure_cell
GhostCell 的替代品,通过 const 表达式提供安全的内部可变性。
lib.rs
:
GhostCell 的替代品,通过 const 表达式提供安全的内部可变性。
优点
- 简单,没有 cell 键
- 与线程局部全局状态配合得更好。
缺点
- const 闭包/函数指针尚不存在(暂时),因此此 crate 依赖于宏魔法来部分填充
- 可能不会始终优化良好(待办事项)
一旦 const 上下文支持可变引用,此 crate 将能够消除第二个缺点。此外,一旦 const 函数指针稳定,此 crate 将能够消除第一个缺点。
入门指南
use pure_cell::{PureCell, pure_cell};
let mut cell = PureCell::new(15);
pure_cell!(cell, (), |state: u32, _args: ()| {
state += 1;
});
let got = cell.get();
assert_eq!(*got, 16);
use pure_cell::{PureCell, pure_cell};
let cell = PureCell::new(15);
let amount = 2;
let state = pure_cell!(cell, amount, |state: u32, amount: u32| -> u32 {
state += amount;
state
});
assert_eq!(state, 17);