This is a small crate that aims provides utilities for manipulating slices of optional values, referred to as Slots<T>
.
Bring the prelude into scope:
rust
use slots_slice::prelude::*;
The highlight of the crate are SlotsTrait
and SlotsMutTrait
which add methods for accessing and manipulating slots immutably and mutably. These operate on anything that implements AsRef
<[T]
> so they are available right away on structs such as array and Vec<T>
.
Overview of SlotsTrait
:
```rust use slots_slice::prelude::*;
let slots = [None, Some('a'), None, Some('b')];
asserteq!(slots.count(), 2); assert!(!slots.isempty()); assert!(!slots.is_full());
asserteq!(slots.frontindex(true), Some(1)); asserteq!(slots.frontvalue(), Some(&'a')); asserteq!(slots.frontentry(), Some((1, &'a'))); ```
SlotsMutTrait
provide the mutable version of SlotsTrait
as well as collapse functionality.
```rust use slots_slice::prelude::*;
let mut slots = [None, Some('a'), None, Some('b')];
asserteq!(slots.frontvaluemut(), Some(&mut 'a')); asserteq!(slots.frontentrymut(), Some((1, &mut 'a')));
slots.collapse_front();
assert_eq!(slots, [Some('a'), Some('b'), None, None]); ```