4 个版本
0.1.0 | 2023年7月6日 |
---|---|
0.0.3 | 2023年2月15日 |
0.0.2 | 2023年2月3日 |
0.0.1 | 2023年1月8日 |
#247 in 内存管理
225KB
4K SLoC
dungeon-cell
Cell 和类似 Cell 的类型,可以存储任何类型而不需要动态内存。
目前只实现了 DungeonCore
原始类型(unsized、cell、stack vec 等正在开发中)。
示例
use dungeon_cell::{DungeonCore, layout_for};
// a default DungeonCore can store any 'static type that fits in the layout
let mut core = DungeonCore::<layout_for!(String)>::default();
// we can store a i32 and get it back
core.store(1234);
assert_eq!(core.take(), Some(1234i32));
// we can store a f64 and get it back
core.store(1.234);
assert_eq!(core.take(), Some(1.234f64));
// lets get adventurous and store a String
core.store(String::from("hello world"));
assert_eq!(core.take(), Some(String::from("hello world")));
// we can't take a type the core isn't storing
core.store(1234);
assert_eq!(core.take(), None::<f32>);
// we can borrow both unique and shared
core.store(1234);
*core.borrow_mut::<i32>().unwrap() += 10;
assert_eq!(core.borrow(), Some(&1244i32));
功能
"alloc"
- 启用对alloc
类型的支持。"std"
- 启用对std
类型的支持。同时启用"alloc"
。"unsize"
- 启用 nightly 功能unsize
的使用。需要 nightly 编译器。"many_arg_fn"
- 启用具有 11-30 个参数的函数的实现。
无 std 支持
此 crate 默认为 #![no_std]
,可以在任何 Rust 可用的地方使用。
最低支持的 Rust 版本
需要 Rust 1.64.0。
此 crate 遵循 "最新稳定 Rust" 政策。所列的 MSRV 除非必要否则不会更改。但是,允许在发布时更新到最新的稳定版本。
许可证
根据您的选择,受 Apache 许可证,版本 2.0 或 MIT 许可证 授权。除非您明确说明,否则您提交给 dungeon-cell 的任何有意包含的贡献,根据 Apache-2.0 许可证定义,将按上述方式双授权,没有任何额外的条款或条件。
依赖项
~215KB