Slots Slice

Latest Version

This is a small crate that aims provides utilities for manipulating slices of optional values, referred to as Slots<T>.

Features

Usage

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]); ```