pub struct TupleEncodingV1<T>(pub T);
👎Deprecated: This type preserves a version of tuple encoding for backwards compatibility. It it is known to have improper key ordering. See https://github.com/khonsulabs/bonsaidb/issues/240.
Expand description

This type enables wrapping a tuple to preserve the behavior of the initial implementation of tuple key encoding. This type should not be used in new code and should only be used to preserve backwards compatibility. See https://github.com/khonsulabs/bonsaidb/issues/240 for more information about why this implementation should be avoided.

Tuple Fields§

§0: T
👎Deprecated: This type preserves a version of tuple encoding for backwards compatibility. It it is known to have improper key ordering. See https://github.com/khonsulabs/bonsaidb/issues/240.

Trait Implementations§

source§

impl<T> Clone for TupleEncodingV1<T>
where T: Clone,

source§

fn clone(&self) -> TupleEncodingV1<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T> Debug for TupleEncodingV1<T>
where T: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<'k, T1> Key<'k> for TupleEncodingV1<(T1,)>
where T1: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1,)>, <TupleEncodingV1<(T1,)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2> Key<'k> for TupleEncodingV1<(T1, T2)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2)>, <TupleEncodingV1<(T1, T2)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3> Key<'k> for TupleEncodingV1<(T1, T2, T3)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3)>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3, T4> Key<'k> for TupleEncodingV1<(T1, T2, T3, T4)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>, T4: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4)>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3, T4, T5> Key<'k> for TupleEncodingV1<(T1, T2, T3, T4, T5)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>, T4: for<'ke> Key<'ke>, T5: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5)>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3, T4, T5, T6> Key<'k> for TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>, T4: for<'ke> Key<'ke>, T5: for<'ke> Key<'ke>, T6: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3, T4, T5, T6, T7> Key<'k> for TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>, T4: for<'ke> Key<'ke>, T5: for<'ke> Key<'ke>, T6: for<'ke> Key<'ke>, T7: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<'k, T1, T2, T3, T4, T5, T6, T7, T8> Key<'k> for TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>
where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>, T3: for<'ke> Key<'ke>, T4: for<'ke> Key<'ke>, T5: for<'ke> Key<'ke>, T6: for<'ke> Key<'ke>, T7: for<'ke> Key<'ke>, T8: for<'ke> Key<'ke>,

source§

const CAN_OWN_BYTES: bool = false

If true, this type can benefit from an owned Vec<u8>. This flag is used as a hint of whether to attempt to do memcpy operations in some decoding operations to avoid extra allocations.
source§

fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)> as KeyEncoding>::Error>

Deserialize a sequence of bytes previously encoded with KeyEncoding::as_ord_bytes.
source§

fn first_value() -> Result<Self, NextValueError>

Return the first value in sequence for this type. Not all types implement this.
source§

fn next_value(&self) -> Result<Self, NextValueError>

Return the next value in sequence for this type. Not all types implement this. Instead of wrapping/overflowing, None should be returned.
source§

impl<T1> KeyEncoding for TupleEncodingV1<(T1,)>
where T1: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1,)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2> KeyEncoding for TupleEncodingV1<(T1, T2)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3> KeyEncoding for TupleEncodingV1<(T1, T2, T3)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3, T4> KeyEncoding for TupleEncodingV1<(T1, T2, T3, T4)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>, T4: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3, T4, T5> KeyEncoding for TupleEncodingV1<(T1, T2, T3, T4, T5)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>, T4: for<'k> Key<'k>, T5: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3, T4, T5, T6> KeyEncoding for TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>, T4: for<'k> Key<'k>, T5: for<'k> Key<'k>, T6: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3, T4, T5, T6, T7> KeyEncoding for TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>, T4: for<'k> Key<'k>, T5: for<'k> Key<'k>, T6: for<'k> Key<'k>, T7: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.
source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> KeyEncoding for TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>
where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>, T4: for<'k> Key<'k>, T5: for<'k> Key<'k>, T6: for<'k> Key<'k>, T7: for<'k> Key<'k>, T8: for<'k> Key<'k>,

§

type Error = CompositeKeyError

The error type that can be produced by either serialization or deserialization.
source§

const LENGTH: Option<usize> = _

The size of the key, if constant. If this type doesn’t produce the same number of bytes for each value, this should be None.
source§

fn describe<Visitor>(visitor: &mut Visitor)
where Visitor: KeyVisitor,

Describes this type by invoking functions on visitor describing the key being encoded. Read more
source§

fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)> as KeyEncoding>::Error>

Convert self into a Cow<'_, [u8]> containing bytes that are able to be compared via memcmp in a way that is comptaible with its own Ord implementation.

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for TupleEncodingV1<T>
where T: RefUnwindSafe,

§

impl<T> Send for TupleEncodingV1<T>
where T: Send,

§

impl<T> Sync for TupleEncodingV1<T>
where T: Sync,

§

impl<T> Unpin for TupleEncodingV1<T>
where T: Unpin,

§

impl<T> UnwindSafe for TupleEncodingV1<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more