5个版本
0.2.2 | 2023年7月25日 |
---|---|
0.2.1 | 2023年7月25日 |
0.2.0 | 2023年7月24日 |
0.1.1 | 2023年7月19日 |
0.1.0 | 2023年7月19日 |
1630 in 数据结构
93 monthly downloads
5KB
WrappedSlab 
非常简单的Rust库,当您想要比Slab的usize
键更强的类型保证时很有用。生成接受TKey
而不是usize
的TSlab(Slab<T>)
。同样还生成了TVacantEntry(VacantEntry<T>)
。如果所有键都将usize
更改为TKey
,则应将其用作Slab<T>
的替换。
示例
use wrapped_slab::WrappedSlab;
#[derive(WrappedSlab)]
struct TestUnitStruct(String);
fn main() {
let mut slab = TestUnitStructSlab::default();
let key: TestUnitStructKey = slab.insert(TestUnitStruct("testing".into()));
let val: Option<&TestUnitStruct> = slab.get(key);
let next_entry: TestUnitStructVacantEntry = slab.vacant_entry();
let next_key: TestUnitStructKey = next_entry.key();
let next_entry_ref: &mut TestUnitStruct = next_entry.insert(TestUnitStruct(format!("{next_key:?}")));
// See wrapped_slab/tests/ for more examples
}
依赖项
~1.5MB
~37K SLoC