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<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>where B: BufMut, 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<B>(&self, buf: &mut B) -> Result<(), EncodeError>where
B: BufMut,
Self: Sized,
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>where B: BufMut, 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<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode<B>(buf: B) -> Result<Self, DecodeError>where B: Buf, Self: Default,
Decodes an instance of the message from a buffer. Read more
source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where
B: Buf,
Self: Default,
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>where B: Buf, Self: Default,
Decodes a length-delimited instance of the message from the buffer.
source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>where B: Buf, Self: Sized,
Decodes an instance of the message from a buffer, and merges it into
self
. Read moresource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Self: Sized,
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>where B: Buf, 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
source§fn eq(&self, other: &ProtoStateFieldDiffs) -> bool
fn eq(&self, other: &ProtoStateFieldDiffs) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for ProtoStateFieldDiffs
Auto Trait Implementations§
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> 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<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
.