#interior-mutability #const #mutability #cell #pure #interior

no-std pure_cell

GhostCell 的替代品,通过 const 表达式提供安全的内部可变性

2 个不稳定版本

0.2.0 2022 年 3 月 28 日
0.1.0 2022 年 3 月 12 日

#2693 in Rust 模式

Apache-2.0 OR MIT OR BSL-1.0

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);

无运行时依赖项