Skip to content

lun3x/wrapped_slab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WrappedSlab Tests

Also available on crates.io.

Very simple Rust library useful when you want stronger type guarantees than Slab's usize keys. Generates TSlab(Slab<T>) that accepts TKey instead of usize. TVacantEntry(VacantEntry<T>) is also generated along the same lines. This should be a drop-in replacement for Slab<T>, provided all the keys are changed from usize to TKey.

Example

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
}

About

Auto-generate newtype idiom based on a Slab

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages