Using a slab
Some algorithms require you to hold access tokens to data that may or may not exist. This could be solved in Rust by using Vec<Option<T>>
, and treating the index of your data as a token. But we can do better! slab
is an optimized abstraction of exactly this concept.
While it is not meant as a general-purpose collection, slab
can help you a lot if you use it in the right places.
How to do it...
Open the
Cargo.toml
file that has been generated earlier for you.- Under
[dependencies]
, add the following line:
slab = "0.4.0"
- If you want, you can go to slab's crates.io page (https://crates.io/crates/slab) to check for the newest version, and use that one instead.
In the folder
bin
, create a file calledslab.rs
.Add the following code, and run it with
cargo run --bin slab
:
1 extern crate slab; 2 use slab::{Slab, VacantEntry}; 3 4 fn main() { 5 // A slab is meant to be used as a limited buffer 6 // As such, you should initialize it with a pre- 7 // defined capacity...