2个不稳定版本
0.1.0 | 2023年4月28日 |
---|---|
0.0.1 | 2023年4月10日 |
#626 在 内存管理
每月24次下载
19KB
484 行
shared_slab
该crate提供了一个数据类型 Slab
,其概念与 slab
或 sharded-slab
crate 提供的概念非常相似。
与其他crate相比,该crate的关键区别可以总结在其函数签名中
pub fn get(&self, key: usize) -> Option<&T>
pub fn insert(&self, value: T) -> usize
pub fn insert_and_get(&self, value: T) -> (usize, &T)
pub fn remove(&mut self, key: usize) -> T
或者换句话说,允许共享访问其中包含的值的同时进行共享插入。(slab
在插入时需要可变访问,而 sharded-slab
不提供对包含数据的直接 &T
引用)
至于用例,这种结构主要用于缓存和重用资源,在以下模式中
pub fn add_resource(&self, resource_descriptor: Descriptor) -> &Resource