//! Abstract interface for managing free slot indices.
//! `Pool` depends only on this trait, not on a particular synchronisation
//! mechanism.
//!
//! Two backends are provided: [`CriticalSlots`](crate::critical::CriticalSlots) (default)
//! and [`CasSlots`](crate::cas::CasSlots) (behind feature `cas`):
//!
//! ```ignore
//! use slotpool::Pool;
//! use slotpool::critical::CriticalSlots;
//! #[cfg(feature = "cas")]
//! use slotpool::cas::CasSlots;
//!
//! type MyPool = Pool<u8, 16>; // default: CriticalSlots
//! type MyCasPool = Pool<u8, 16, CasSlots<16>>; // explicit CAS backend
//! ```