Crates.io | shared_slab |
lib.rs | shared_slab |
version | 0.1.0 |
source | src |
created_at | 2023-04-10 09:06:43.872478 |
updated_at | 2023-04-28 05:43:31.01642 |
description | Data structure with shared insertion |
homepage | |
repository | https://git.sr.ht/~theonlymrcat/shared_slab |
max_upload_size | |
id | 834960 |
size | 19,724 |
This crate provides a single data type, Slab
, which is very similar in concept to that provided
by the slab
or sharded-slab
crates.
The key difference of this crate as compared to the others can be summed up in the function signatures:
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
Or, in words, shared insertion while allowing shared access to the values contained within.
(slab
requires mutable access for insertion, and sharded-slab
doesn't provide direct &T
references to contained data)
As for use-cases, this structure is mainly useful for memoizing and reusing resources, in a pattern of:
pub fn add_resource(&self, resource_descriptor: Descriptor) -> &Resource