1个不稳定版本

0.1.0 2023年9月10日

#2449 in Rust模式

MIT/Apache

11KB
172

OptionCell: OnceCell但可从Option派生

此库提供了一个类似于OnceCell的等价物,但它保证与Option<T>的布局兼容性,并提供额外的transmute辅助函数。

已知用例

  • 在不暴露内部可变性给用户或无必要克隆值的情况下实现统一算法

使用方法

cargo add option-cell
use option_cell::OptionCell;

let mut options = vec![None, None];
let cells = OptionCell::from_mut_slice(&mut options);
cells[0].set(1).unwrap();

开发

与MIRI检查

cargo +nightly miri test

lib.rs:

OptionCell: OnceCell但可从Option派生

此库提供了一个类似于OnceCell的等价物,但它保证与Option<T>的布局兼容性,并提供额外的transmute辅助函数。

已知用例

  • 在不暴露内部可变性给用户或无必要克隆值的情况下实现统一算法

使用方法

cargo add option-cell
use option_cell::OptionCell;

let mut options = vec![None, None];
let cells = OptionCell::from_mut_slice(&mut options);
cells[0].set(1).unwrap();

无运行时依赖