Skip to main content

MapStaticU16Example

Struct MapStaticU16Example 

Source
pub struct MapStaticU16Example<K: Copy, V, const N: usize> { /* private fields */ }
Expand description

🗃️ A runtime static hashmap with stored empty and tomb markers.

This variant stores its marker values as fields, enabling runtime initialization, cloning, and dynamic configuration. All operations follow the same hashing and probing logic as the const variant, but methods are non-const to allow greater flexibility.

Implementations§

Source§

impl<V, const N: usize> MapStaticU16Example<u16, V, N>

Source

pub fn insert_move(&mut self, key: u16, value: V) -> Result<(), NotEnoughSpace>

Inserts a key-value pair, consuming the value.

Source

pub fn replace(&mut self, key: u16, replacement: V) -> Option<V>

Removes and returns the value for a given key, replacing it with a provided value.

Source

pub fn replace_default(&mut self, key: u16) -> Option<V>
where V: Default,

Removes and returns the value for a given key, replacing it with V::default().

Source

pub fn replace_with<F>(&mut self, key: u16, replacement: F) -> Option<V>
where F: FnOnce() -> V,

Removes and returns the value for a given key, replacing it with a custom value.

Source

pub const fn capacity(&self) -> usize

Returns the total capacity of the hashmap (fixed at N).

Source

pub const fn hash_index(&self, key: u16) -> usize

Computes a hash index.

Source§

impl<V, const N: usize> MapStaticU16Example<u16, V, N>

Source

pub fn empty(&self) -> u16

Returns the key value used to mark empty slots.

Source

pub fn tomb(&self) -> u16

Returns the key value used to mark deleted slots.

Source§

impl<V, const N: usize> MapStaticU16Example<u16, V, N>

Source

pub fn new() -> Self
where V: Default,

Constructs a new static map with runtime EMPTY and TOMB values.

Source

pub fn get_ref(&self, key: u16) -> Option<&V>

Retrieves some shared reference to the value associated with the given key.

Source

pub fn get_mut(&mut self, key: u16) -> Option<&mut V>

Retrieves some exclusive reference to the value associated with the given key.

Source

pub fn entry(&mut self, key: u16) -> StaticMapEntry<'_, V>

Retrieves an entry for a given key.

Source

pub fn len(&self) -> usize

Returns the number of occupied slots in the hashmap.

Source

pub fn is_empty(&self) -> bool

Returns true if the hashmap contains no entries.

Source

pub fn is_full(&self) -> bool

Returns true if the hashmap is completely full.

Source

pub fn should_rebuild(&self) -> bool

Determines if rebuilding the table would improve efficiency.

§Heuristic:
  • Rebuild if TOMB slots exceed N / 2 (half the table size).
Source

pub fn deleted_count(&self) -> usize

Returns the number of deleted (TOMB) slots.

Source

pub fn load_factor(&self) -> f32

Returns the load factor as a fraction of total capacity.

Source

pub fn insert(&mut self, key: u16, value: V) -> Result<(), NotEnoughSpace>

Inserts a key-value pair.

§Returns
  • Ok(()) if the insertion succeeds.
  • Err(NotEnoughSpace) if no slots are available.
§Behavior
  • Computes the hash index of the key.
  • If the slot is EMPTY, inserts immediately.
  • If the slot contains TOMB, the first TOMB encountered is used if no empty slots exist earlier in probing.
  • If the slot contains another key, probes forward until an open slot is found.
  • If no open slots exist, returns an error.
Source§

impl<V: Copy, const N: usize> MapStaticU16Example<u16, V, N>

Source

pub fn get(&self, key: u16) -> Option<V>

Retrieves a value by key.

§Returns
  • Some(value) if the key exists.
  • None if the key is missing.
§Behavior
  • Searches for the key using linear probing.
  • If a TOMB (deleted slot) is encountered, it continues probing.
  • If an EMPTY slot is reached, the key is not in the table.
Source

pub fn remove(&mut self, key: u16) -> bool

Removes a key-value pair.

§Returns
  • true if the key was found and removed.
  • false if the key was not found in the map.
§Behavior
  • Marks the slot as deleted (TOMB).
  • Future lookups will continue probing past deleted entries.
  • Does NOT free the slot for immediate reuse.
  • New insertions only reuse a TOMB slot if no earlier EMPTY slots exist.
Source§

impl<V: Copy + Default, const N: usize> MapStaticU16Example<u16, V, N>

Source

pub fn remove_rebuild(&mut self, key: u16) -> bool

Removes a key-value pair and optionally rebuilds the table.

§Behavior
  • Calls remove(), returning true if the key was found.
  • If should_rebuild() returns true, calls rebuild().
Source

pub fn rebuild(&mut self)

Rebuilds the table by removing TOMB slots and optimizing key placement.

Calls Self::rebuilt() and replaces self with the optimized table.

§When to Call?
  • When many deletions have occurred.
  • If lookups start taking significantly longer.
Source

pub fn rebuilt(&self) -> Self

Returns a rebuilt version of the table with TOMB slots removed.

Creates a new table and reinserts all valid keys while preserving the probe order.

§Complexity
  • O(N) worst-case when all slots are occupied.

Trait Implementations§

Source§

impl<K: Clone + Copy, V: Clone, const N: usize> Clone for MapStaticU16Example<K, V, N>

Source§

fn clone(&self) -> MapStaticU16Example<K, V, N>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<K: Copy + Copy, V: Copy, const N: usize> Copy for MapStaticU16Example<K, V, N>

Source§

impl<K: Debug + Copy, V: Debug, const N: usize> Debug for MapStaticU16Example<K, V, N>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<V: Default, const N: usize> Default for MapStaticU16Example<u16, V, N>

Source§

fn default() -> Self

Creates an empty hashmap.

§Panics

Panics in debug if EMPTY and TOMB are equal, or if any of them are out of range for $KEY.

Source§

impl<K: Eq + Copy, V: Eq, const N: usize> Eq for MapStaticU16Example<K, V, N>

Source§

impl<K: Hash + Copy, V: Hash, const N: usize> Hash for MapStaticU16Example<K, V, N>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<K: PartialEq + Copy, V: PartialEq, const N: usize> PartialEq for MapStaticU16Example<K, V, N>

Source§

fn eq(&self, other: &MapStaticU16Example<K, V, N>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<K: Copy, V, const N: usize> StructuralPartialEq for MapStaticU16Example<K, V, N>

Auto Trait Implementations§

§

impl<K, V, const N: usize> Freeze for MapStaticU16Example<K, V, N>
where K: Freeze, V: Freeze,

§

impl<K, V, const N: usize> RefUnwindSafe for MapStaticU16Example<K, V, N>

§

impl<K, V, const N: usize> Send for MapStaticU16Example<K, V, N>
where K: Send, V: Send,

§

impl<K, V, const N: usize> Sync for MapStaticU16Example<K, V, N>
where K: Sync, V: Sync,

§

impl<K, V, const N: usize> Unpin for MapStaticU16Example<K, V, N>
where K: Unpin, V: Unpin,

§

impl<K, V, const N: usize> UnsafeUnpin for MapStaticU16Example<K, V, N>
where K: UnsafeUnpin, V: UnsafeUnpin,

§

impl<K, V, const N: usize> UnwindSafe for MapStaticU16Example<K, V, N>
where K: UnwindSafe, V: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AnyExt for T
where T: Any + ?Sized,

Source§

fn type_id() -> TypeId

Returns the TypeId of Self. Read more
Source§

fn type_of(&self) -> TypeId

Returns the TypeId of self. Read more
Source§

fn type_name(&self) -> &'static str

Returns the type name of self. Read more
Source§

fn type_is<T: 'static>(&self) -> bool

Returns true if Self is of type T. Read more
Source§

fn type_hash(&self) -> u64

Returns a deterministic hash of the TypeId of Self.
Source§

fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64

Returns a deterministic hash of the TypeId of Self using a custom hasher.
Source§

fn as_any_ref(&self) -> &dyn Any
where Self: Sized,

Upcasts &self as &dyn Any. Read more
Source§

fn as_any_mut(&mut self) -> &mut dyn Any
where Self: Sized,

Upcasts &mut self as &mut dyn Any. Read more
Source§

fn as_any_box(self: Box<Self>) -> Box<dyn Any>
where Self: Sized,

Available on crate feature alloc only.
Upcasts Box<self> as Box<dyn Any>. Read more
Source§

fn downcast_ref<T: 'static>(&self) -> Option<&T>

Available on crate feature unsafe_layout and non-crate feature safe_code only.
Returns some shared reference to the inner value if it is of type T. Read more
Source§

fn downcast_mut<T: 'static>(&mut self) -> Option<&mut T>

Available on crate feature unsafe_layout and non-crate feature safe_code only.
Returns some exclusive reference to the inner value if it is of type T. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByteSized for T

Source§

const BYTE_ALIGN: usize = _

The alignment of this type in bytes.
Source§

const BYTE_SIZE: usize = _

The size of this type in bytes.
Source§

fn byte_align(&self) -> usize

Returns the alignment of this type in bytes.
Source§

fn byte_size(&self) -> usize

Returns the size of this type in bytes. Read more
Source§

fn ptr_size_ratio(&self) -> [usize; 2]

Returns the size ratio between Ptr::BYTES and BYTE_SIZE. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Hook for T

Source§

fn hook<F>(self, f: F) -> Self
where F: FnOnce(&mut Self),

Hooks a mutation step into the value and returns it. Read more
Source§

fn tap<F>(self, f: F) -> Self
where F: FnOnce(&Self),

Taps into the value for observation and returns it unchanged. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MemExt for T
where T: ?Sized,

Source§

const NEEDS_DROP: bool = _

Know whether dropping values of this type matters, in compile-time.
Source§

fn mem_align_of<T>() -> usize

Returns the minimum alignment of the type in bytes. Read more
Source§

fn mem_align_of_val(&self) -> usize

Returns the alignment of the pointed-to value in bytes. Read more
Source§

fn mem_size_of<T>() -> usize

Returns the size of a type in bytes. Read more
Source§

fn mem_size_of_val(&self) -> usize

Returns the size of the pointed-to value in bytes. Read more
Source§

fn mem_copy(&self) -> Self
where Self: Copy,

Bitwise-copies a value. Read more
Source§

fn mem_needs_drop(&self) -> bool

Returns true if dropping values of this type matters. Read more
Source§

fn mem_drop(self)
where Self: Sized,

Drops self by running its destructor. Read more
Source§

fn mem_forget(self)
where Self: Sized,

Forgets about self without running its destructor. Read more
Source§

fn mem_replace(&mut self, other: Self) -> Self
where Self: Sized,

Replaces self with other, returning the previous value of self. Read more
Source§

fn mem_take(&mut self) -> Self
where Self: Default,

Replaces self with its default value, returning the previous value of self. Read more
Source§

fn mem_swap(&mut self, other: &mut Self)
where Self: Sized,

Swaps the value of self and other without deinitializing either one. Read more
Source§

unsafe fn mem_zeroed<T>() -> T

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Source§

unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst

Available on crate feature unsafe_layout only.
Returns the value of type T represented by the all-zero byte-pattern. Read more
Source§

fn mem_as_bytes(&self) -> &[u8]
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &[u8]. Read more
Source§

fn mem_as_bytes_mut(&mut self) -> &mut [u8]
where Self: Sync + Unpin,

Available on crate feature unsafe_slice only.
View a Sync + Unpin self as &mut [u8]. Read more
Source§

impl<T, R> Morph<R> for T
where T: ?Sized,

Source§

fn morph<F>(self, f: F) -> R
where F: FnOnce(Self) -> R, Self: Sized,

Morphs the value into a new one and returns it. Read more
Source§

fn morph_ref<F>(&self, f: F) -> R
where F: FnOnce(&Self) -> R,

Morphs the value by shared reference and returns the result. Read more
Source§

fn morph_mut<F>(&mut self, f: F) -> R
where F: FnOnce(&mut Self) -> R,

Morphs the value by exclusive reference and returns the result. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.