pub struct Index<T: Translator, V: Send + Sync> { /* private fields */ }Expand description
A memory-efficient index that uses an unordered map internally to map translated keys to arbitrary values.
Each translated key maps directly to its most recently inserted value. Conflicting values (from key collisions or repeated insertions) live in a separate overflow map, keeping the common (collision-free) case compact.
Implementations§
Trait Implementations§
Source§impl<T: Translator, V: Send + Sync> Unordered for Index<T, V>
impl<T: Translator, V: Send + Sync> Unordered for Index<T, V>
Source§type Cursor<'a> = Cursor<'a, <T as Translator>::Key, V, OccupiedEntry<'a, <T as Translator>::Key, V>, T>
where
Self: 'a
type Cursor<'a> = Cursor<'a, <T as Translator>::Key, V, OccupiedEntry<'a, <T as Translator>::Key, V>, T> where Self: 'a
The type of cursor returned by this index to iterate over values with conflicting keys.
Source§fn get<'a>(&'a self, key: &[u8]) -> impl Iterator<Item = &'a V> + 'awhere
V: 'a,
fn get<'a>(&'a self, key: &[u8]) -> impl Iterator<Item = &'a V> + 'awhere
V: 'a,
Returns an iterator over all values associated with a translated key. Read more
Source§fn get_mut<'a>(&'a mut self, key: &[u8]) -> Option<Self::Cursor<'a>>
fn get_mut<'a>(&'a mut self, key: &[u8]) -> Option<Self::Cursor<'a>>
Provides mutable access to the values associated with a translated key, if the key exists.
Source§fn get_mut_or_insert<'a>(
&'a mut self,
key: &[u8],
value: V,
) -> Option<Self::Cursor<'a>>
fn get_mut_or_insert<'a>( &'a mut self, key: &[u8], value: V, ) -> Option<Self::Cursor<'a>>
Provides mutable access to the values associated with a translated key (if the key exists),
otherwise inserts a new value and returns
None.Source§fn insert_and_retain(
&mut self,
key: &[u8],
value: V,
should_retain: impl Fn(&V) -> bool,
)
fn insert_and_retain( &mut self, key: &[u8], value: V, should_retain: impl Fn(&V) -> bool, )
Insert a value at the given translated key, and remove any values for which
should_retain returns false. Read moreAuto Trait Implementations§
impl<T, V> !RefUnwindSafe for Index<T, V>
impl<T, V> !UnwindSafe for Index<T, V>
impl<T, V> Freeze for Index<T, V>where
T: Freeze,
impl<T, V> Send for Index<T, V>
impl<T, V> Sync for Index<T, V>
impl<T, V> Unpin for Index<T, V>
impl<T, V> UnsafeUnpin for Index<T, V>where
T: UnsafeUnpin,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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