pub trait SlotsTrait<T>: AsRef<Slots<T>> {
// Provided methods
fn count(&self) -> usize { ... }
fn is_empty(&self) -> bool { ... }
fn is_full(&self) -> bool { ... }
fn front_index(&self, occupied: bool) -> Option<usize> { ... }
fn front_value(&self) -> Option<&T> { ... }
fn front_entry(&self) -> Option<(usize, &T)> { ... }
fn back_index(&self, occupied: bool) -> Option<usize> { ... }
fn back_value(&self) -> Option<&T> { ... }
fn back_entry(&self) -> Option<(usize, &T)> { ... }
fn get_index(&self, direction: Direction, occupied: bool) -> Option<usize> { ... }
fn get_value(&self, direction: Direction) -> Option<&T> { ... }
fn get_entry(&self, direction: Direction) -> Option<(usize, &T)> { ... }
}Expand description
Provides utility methods for accessing and manipulating a collection of slots.
Content: counting, accessing indices, values, and entries.
Provided Methods§
Sourcefn count(&self) -> usize
fn count(&self) -> usize
Returns the number of occupied slots in the collection.
§Examples
use slots_slice::SlotsTrait;
let slots = [None, Some('a'), Some('b'), None];
assert_eq!(slots.count(), 2);Sourcefn is_empty(&self) -> bool
fn is_empty(&self) -> bool
Checks if the collection is empty, i.e., all slots are empty.
§Examples
use slots_slice::SlotsTrait;
let slots: [Option<()>; 3] = [None, None, None];
assert!(slots.is_empty());Sourcefn is_full(&self) -> bool
fn is_full(&self) -> bool
Checks if the collection is full, i.e., all slots are occupied.
§Examples
use slots_slice::SlotsTrait;
let slots = [Some('a'), Some('b'), Some('c')];
assert!(slots.is_full());Sourcefn front_index(&self, occupied: bool) -> Option<usize>
fn front_index(&self, occupied: bool) -> Option<usize>
Returns the index of the first slot that matches the occupancy state.
§Examples
use slots_slice::{SlotsTrait, Direction};
let slots = [None, Some('a'), None, Some('b')];
assert_eq!(slots.front_index(false), Some(0));
assert_eq!(slots.front_index(true), Some(1));Sourcefn front_value(&self) -> Option<&T>
fn front_value(&self) -> Option<&T>
Returns a reference to the value of the first occupied slot.
§Examples
use slots_slice::SlotsTrait;
let slots = [None, Some('a'), Some('b')];
assert_eq!(slots.front_value(), Some(&'a'));Sourcefn front_entry(&self) -> Option<(usize, &T)>
fn front_entry(&self) -> Option<(usize, &T)>
Returns the index and a reference to the value of the first occupied slot.
§Examples
use slots_slice::SlotsTrait;
let slots = [None, Some('a'), Some('b')];
assert_eq!(slots.front_entry(), Some((1, &'a')));Sourcefn back_index(&self, occupied: bool) -> Option<usize>
fn back_index(&self, occupied: bool) -> Option<usize>
Returns the index of the last slot that matches the occupancy state.
§Examples
use slots_slice::{SlotsTrait, Direction};
let slots = [None, Some('a'), None, Some('b')];
assert_eq!(slots.back_index(false), Some(2));
assert_eq!(slots.back_index(true), Some(3));Sourcefn back_value(&self) -> Option<&T>
fn back_value(&self) -> Option<&T>
Returns a reference to the value of the last occupied slot.
§Examples
use slots_slice::SlotsTrait;
let slots = [Some('a'), Some('b'), None];
assert_eq!(slots.back_value(), Some(&'b'));Sourcefn back_entry(&self) -> Option<(usize, &T)>
fn back_entry(&self) -> Option<(usize, &T)>
Returns the index and a reference to the value of the last occupied slot.
§Examples
use slots_slice::SlotsTrait;
let slots = [Some('a'), Some('b'), None];
assert_eq!(slots.back_entry(), Some((1, &'b')));Sourcefn get_index(&self, direction: Direction, occupied: bool) -> Option<usize>
fn get_index(&self, direction: Direction, occupied: bool) -> Option<usize>
Returns the index of the slot in the specified direction that matches the occupancy state.
§Examples
use slots_slice::{SlotsTrait, Direction};
let slots = [None, Some('a'), None, Some('b')];
assert_eq!(slots.get_index(Direction::Front, false), slots.front_index(false));
assert_eq!(slots.get_index(Direction::Front, true), slots.front_index(true));
assert_eq!(slots.get_index(Direction::Back, false), slots.back_index(false));
assert_eq!(slots.get_index(Direction::Back, true), slots.back_index(true));Sourcefn get_value(&self, direction: Direction) -> Option<&T>
fn get_value(&self, direction: Direction) -> Option<&T>
Returns a reference to the value of the slot in the specified direction.
§Examples
use slots_slice::{SlotsTrait, Direction};
let slots = [Some('a'), None, Some('b')];
assert_eq!(slots.get_value(Direction::Front), slots.front_value());
assert_eq!(slots.get_value(Direction::Back), slots.back_value());Sourcefn get_entry(&self, direction: Direction) -> Option<(usize, &T)>
fn get_entry(&self, direction: Direction) -> Option<(usize, &T)>
Returns the index and a reference to the value of the slot in the specified direction.
§Examples
use slots_slice::{SlotsTrait, Direction};
let slots = [Some('a'), None, Some('b')];
assert_eq!(slots.get_entry(Direction::Front), slots.front_entry());
assert_eq!(slots.get_entry(Direction::Back), slots.back_entry());