#[repr(C)]pub enum ValueStorage {
Inline {
len: u8,
data: [u8; 56],
},
Heap(Box<[u8]>),
Tombstone,
}Expand description
Optimized value storage with inline allocation for small values
For typical database workloads, 80%+ of values are < 56 bytes. Storing these inline eliminates heap allocation and pointer chasing.
§Cache Analysis
Current path: DashMap lookup → Version ptr → Value ptr (Vec data) Cache misses: 2-3 (worst case)
Inline path: DashMap lookup → Version with inline value Cache misses: 1
Expected speedup: 2-2.5× for reads on small values
Variants§
Inline
Value stored inline (most common case for small values)
Heap(Box<[u8]>)
Value stored on heap (for large values > 56 bytes)
Tombstone
Tombstone marker (key was deleted)
Implementations§
Source§impl ValueStorage
impl ValueStorage
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ValueStorage
impl RefUnwindSafe for ValueStorage
impl Send for ValueStorage
impl Sync for ValueStorage
impl Unpin for ValueStorage
impl UnsafeUnpin for ValueStorage
impl UnwindSafe for ValueStorage
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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