#[repr(C)]pub enum ValueStorage {
Inline {
len: u8,
data: [u8; 56],
},
Heap(Box<[u8]>),
Tombstone,
}Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
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
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Value stored inline (most common case for small values)
Fields
Heap(Box<[u8]>)
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Value stored on heap (for large values > 56 bytes)
Tombstone
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Tombstone marker (key was deleted)
Implementations§
Source§impl ValueStorage
impl ValueStorage
Sourcepub fn new(value: Option<&[u8]>) -> Self
👎Deprecated: Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
pub fn new(value: Option<&[u8]>) -> Self
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Create new value storage, preferring inline when possible
Sourcepub fn as_bytes(&self) -> Option<&[u8]>
👎Deprecated: Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
pub fn as_bytes(&self) -> Option<&[u8]>
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Get value as byte slice
Sourcepub fn is_tombstone(&self) -> bool
👎Deprecated: Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
pub fn is_tombstone(&self) -> bool
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Check if this is a tombstone
Sourcepub fn is_inline(&self) -> bool
👎Deprecated: Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
pub fn is_inline(&self) -> bool
Unused duplicate memtable; live memtables are lscs::ColumnarMemtable + durable_storage::MvccMemTable. Scheduled for removal (Task 2 consolidation).
Check if value is stored inline
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
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>
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