//! * The key must be 8 bits wide and subject to the *null pointer optimisation*
//! * The key must be 8 bits wide and subject to the *null pointer optimisation*
//! * The value must be a ZST.
//! * The value must be a ZST.
//!
//!
//! This leaves pretty much only `NonZeroU8` and `NonZeroI8` as entirely space-efficient key candidates.
//! This leaves pretty much only `std::num::NonZeroU8` and `std::num::NonZeroI8` as entirely space-efficient key candidates.
//! The restriction on values also means the only entirely space-efficient smallmaps are sets, enable to encode only if a key is present, with no extra information. (See `std::collections::HashSet`).
//! The restriction on values also means the only entirely space-efficient smallmaps are sets, enable to encode only if a key is present, with no extra information. (See `std::collections::HashSet`).
usesuper::*;
usesuper::*;
@ -14,6 +14,16 @@ use super::*;
/// This type is entirely space efficient and will only ever allocate `256` bytes of memory.
/// This type is entirely space efficient and will only ever allocate `256` bytes of memory.
pubtypeNonZeroByteSet=Set<std::num::NonZeroU8>;
pubtypeNonZeroByteSet=Set<std::num::NonZeroU8>;
/// A set of non-zero signed 8-bit integers.
///
/// This type is entirely space efficient and will only ever allocate `256` bytes of memory.
pubtypeNonZeroI8Set=Set<std::num::NonZeroI8>;
/// A set of non-zero unsigned 8-bit integers.
///
/// This type is entirely space efficient and will only ever allocate `256` bytes of memory.