pub struct Encoder<K: Hash, V> {
values: Vec<(K, V)>,
codes: AHashMap<K, u32>,
}
Expand description
This structure represents an encoder that maps unique keys to integer codes while storing associated values. It encapsulates a vector of key-value pairs alongside a hash map that records the corresponding code for each key.
The interface supports operations to insert new key-value associations, retrieve a code given a key, and decode keys and values based on their assigned codes, ensuring efficient bidirectional lookup between keys and integer representations.
Fields§
§values: Vec<(K, V)>
§codes: AHashMap<K, u32>
Implementations§
Source§impl<K: Hash + Clone + Eq, V> Encoder<K, V>
impl<K: Hash + Clone + Eq, V> Encoder<K, V>
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new encoder instance with no stored key-value pairs.
This constructor initializes the internal storage to be empty, allowing subsequent insertions to assign unique numerical codes to keys while associating corresponding values.
Sourcepub fn insert(&mut self, k: K, v: V) -> u32
pub fn insert(&mut self, k: K, v: V) -> u32
Inserts a new key-value pair into the encoder, assigning and returning a unique numeric code for the key.
Generates a code based on the current state of internal storage, clones the key, and stores the pair in parallel structures that maintain both an ordered list of values and a mapping from keys to their corresponding codes, enabling efficient retrieval and translation between keys and their numeric identifiers.
Sourcepub fn encode(&self, t: &K) -> Option<u32>
pub fn encode(&self, t: &K) -> Option<u32>
Retrieves a numeric code corresponding to a given key from the internal mapping.
Returns an optional value representing the unique encoding if the key exists, or None otherwise.
Trait Implementations§
Auto Trait Implementations§
impl<K, V> Freeze for Encoder<K, V>
impl<K, V> RefUnwindSafe for Encoder<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for Encoder<K, V>
impl<K, V> Sync for Encoder<K, V>
impl<K, V> Unpin for Encoder<K, V>
impl<K, V> UnwindSafe for Encoder<K, V>where
K: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
Source§impl<T> AllocForAny<T> for T
impl<T> AllocForAny<T> for T
Source§fn galloc(self) -> &'static T
fn galloc(self) -> &'static T
Provides a method to allocate an instance of T
on the heap with a static lifetime.
This implementation of galloc
takes ownership of the T
instance and uses the alloc
function to place it in a location with a static lifetime, presumably managing it in a way that ensures its persistence for the duration of the program.
This can be particularly useful for scenarios where a static lifetime is required, such as when interfacing with systems or patterns that necessitate global state or long-lived data.
Source§fn galloc_mut(self) -> &'static T
fn galloc_mut(self) -> &'static T
Provides a method that moves the instance and returns a reference to it allocated with a static lifetime.
This method utilizes alloc_mut
to perform the allocation, likely involving allocating the resource in a manner that ensures it lives for the entire duration of the application.
These semantics allow the user to safely assume that the reference will not expire during the program’s execution, making it suitable for long-lived data structures or operations that require such guarantees.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more