pub struct PropertySetJsonbDictionaryBuilder { /* private fields */ }Expand description
Custom dictionary builder for PropertySet → JSONB encoding with pointer-based deduplication.
This builder eliminates redundant JSONB serialization and dictionary hash lookups
for duplicate PropertySets by using PropertySet’s Arc<Object> pointer addresses as keys.
Performance benefits over Arrow’s BinaryDictionaryBuilder:
- Eliminates content-based hashing: Arrow’s builder hashes JSONB bytes for deduplication
- Pointer-based deduplication: O(1) pointer comparison vs O(n) content hash
- Serialization only when needed: Only serialize PropertySet on first encounter
- Memory efficiency: Shared PropertySet references, single JSONB copy per unique set
Implementations§
Source§impl PropertySetJsonbDictionaryBuilder
impl PropertySetJsonbDictionaryBuilder
Sourcepub fn new(capacity: usize) -> PropertySetJsonbDictionaryBuilder
pub fn new(capacity: usize) -> PropertySetJsonbDictionaryBuilder
Create a new builder with the specified capacity hint
Sourcepub fn append_property_set(
&mut self,
property_set: &PropertySet,
) -> Result<(), Error>
pub fn append_property_set( &mut self, property_set: &PropertySet, ) -> Result<(), Error>
Append PropertySet using pointer-based deduplication
For cache hits: reuses existing dictionary index (no serialization) For cache misses: serializes once and stores in dictionary
Sourcepub fn append_null(&mut self)
pub fn append_null(&mut self)
Append a null value
Auto Trait Implementations§
impl Freeze for PropertySetJsonbDictionaryBuilder
impl RefUnwindSafe for PropertySetJsonbDictionaryBuilder
impl Send for PropertySetJsonbDictionaryBuilder
impl Sync for PropertySetJsonbDictionaryBuilder
impl Unpin for PropertySetJsonbDictionaryBuilder
impl UnwindSafe for PropertySetJsonbDictionaryBuilder
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].