Struct mz_persist_client::internal::state::ProtoStateFieldDiffs
source · pub struct ProtoStateFieldDiffs {
pub fields: Vec<i32>,
pub diff_types: Vec<i32>,
pub data_lens: Vec<u64>,
pub data_bytes: Bytes,
}
Expand description
A columnar encoding of Vec<StateFieldDiff<K, V>> with heterogeneous K and V.
- The number of diffs (len) == fields.len() == diff_types.len()
- Each diff is encoded into 1 data slice for the key and 1 (Insert, Delete) or 2 (Update) data slices for the val
- These data slices are concatenated together in data_bytes and the corresponding lengths of each slice in data_lens. (So number of data slices == data_lens.len().)
- We store the length of each data_slice, not e.g. an offset into data_bytes. This makes random access slower, but we only ever iterate (random access by diff idx would be tricky anyway because each diff gets a variable number of data slices based on it’s type.) Storing the lengths, OTOH, compresses much better with protobuf varints.
Fields§
§fields: Vec<i32>
§diff_types: Vec<i32>
§data_lens: Vec<u64>
§data_bytes: Bytes
Implementations§
source§impl ProtoStateFieldDiffs
impl ProtoStateFieldDiffs
sourcepub fn fields(
&self,
) -> FilterMap<Cloned<Iter<'_, i32>>, fn(_: i32) -> Option<ProtoStateField>>
pub fn fields( &self, ) -> FilterMap<Cloned<Iter<'_, i32>>, fn(_: i32) -> Option<ProtoStateField>>
Returns an iterator which yields the valid enum values contained in fields
.
sourcepub fn push_fields(&mut self, value: ProtoStateField)
pub fn push_fields(&mut self, value: ProtoStateField)
Appends the provided enum value to fields
.
sourcepub fn diff_types(
&self,
) -> FilterMap<Cloned<Iter<'_, i32>>, fn(_: i32) -> Option<ProtoStateFieldDiffType>>
pub fn diff_types( &self, ) -> FilterMap<Cloned<Iter<'_, i32>>, fn(_: i32) -> Option<ProtoStateFieldDiffType>>
Returns an iterator which yields the valid enum values contained in diff_types
.
sourcepub fn push_diff_types(&mut self, value: ProtoStateFieldDiffType)
pub fn push_diff_types(&mut self, value: ProtoStateFieldDiffType)
Appends the provided enum value to diff_types
.
source§impl ProtoStateFieldDiffs
impl ProtoStateFieldDiffs
pub fn into_writer(self) -> ProtoStateFieldDiffsWriter
pub fn iter<'a>(&'a self) -> ProtoStateFieldDiffsIter<'a> ⓘ
pub fn validate(&self) -> Result<(), String>
Trait Implementations§
source§impl Clone for ProtoStateFieldDiffs
impl Clone for ProtoStateFieldDiffs
source§fn clone(&self) -> ProtoStateFieldDiffs
fn clone(&self) -> ProtoStateFieldDiffs
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for ProtoStateFieldDiffs
impl Debug for ProtoStateFieldDiffs
source§impl Default for ProtoStateFieldDiffs
impl Default for ProtoStateFieldDiffs
source§impl Message for ProtoStateFieldDiffs
impl Message for ProtoStateFieldDiffs
source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Returns the encoded length of the message without a length delimiter.
source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Encodes the message to a buffer. Read more
source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Encodes the message to a newly allocated buffer.
source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Encodes the message with a length-delimiter to a buffer. Read more
source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Encodes the message with a length-delimiter to a newly allocated buffer.
source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Decodes an instance of the message from a buffer. Read more
source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Decodes a length-delimited instance of the message from the buffer.
source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
Decodes an instance of the message from a buffer, and merges it into
self
. Read moresource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
Decodes a length-delimited instance of the message from buffer, and
merges it into
self
.source§impl PartialEq for ProtoStateFieldDiffs
impl PartialEq for ProtoStateFieldDiffs
impl StructuralPartialEq for ProtoStateFieldDiffs
Auto Trait Implementations§
impl !Freeze for ProtoStateFieldDiffs
impl RefUnwindSafe for ProtoStateFieldDiffs
impl Send for ProtoStateFieldDiffs
impl Sync for ProtoStateFieldDiffs
impl Unpin for ProtoStateFieldDiffs
impl UnwindSafe for ProtoStateFieldDiffs
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
Creates a shared type from an unshared type.
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.