Struct bonsaidb::core::key::TupleEncodingV1
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§
§impl<T> Clone for TupleEncodingV1<T>where
T: Clone,
impl<T> Clone for TupleEncodingV1<T>where T: Clone,
§fn clone(&self) -> TupleEncodingV1<T>
fn clone(&self) -> TupleEncodingV1<T>
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 more§impl<T> Debug for TupleEncodingV1<T>where
T: Debug,
impl<T> Debug for TupleEncodingV1<T>where T: Debug,
§impl<'k, T1> Key<'k> for TupleEncodingV1<(T1,)>where
T1: for<'ke> Key<'ke>,
impl<'k, T1> Key<'k> for TupleEncodingV1<(T1,)>where T1: for<'ke> Key<'ke>,
§const CAN_OWN_BYTES: bool = false
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.§fn from_ord_bytes<'e>(
bytes: ByteSource<'k, 'e>
) -> Result<TupleEncodingV1<(T1,)>, <TupleEncodingV1<(T1,)> as KeyEncoding<TupleEncodingV1<(T1,)>>>::Error>
fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1,)>, <TupleEncodingV1<(T1,)> as KeyEncoding<TupleEncodingV1<(T1,)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§impl<'k, T1, T2> Key<'k> for TupleEncodingV1<(T1, T2)>where
T1: for<'ke> Key<'ke>,
T2: for<'ke> Key<'ke>,
impl<'k, T1, T2> Key<'k> for TupleEncodingV1<(T1, T2)>where T1: for<'ke> Key<'ke>, T2: for<'ke> Key<'ke>,
§const CAN_OWN_BYTES: bool = false
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.§fn from_ord_bytes<'e>(
bytes: ByteSource<'k, 'e>
) -> Result<TupleEncodingV1<(T1, T2)>, <TupleEncodingV1<(T1, T2)> as KeyEncoding<TupleEncodingV1<(T1, T2)>>>::Error>
fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2)>, <TupleEncodingV1<(T1, T2)> as KeyEncoding<TupleEncodingV1<(T1, T2)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§fn from_ord_bytes<'e>(
bytes: ByteSource<'k, 'e>
) -> Result<TupleEncodingV1<(T1, T2, T3)>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3)>>>::Error>
fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3)>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§fn from_ord_bytes<'e>(
bytes: ByteSource<'k, 'e>
) -> Result<TupleEncodingV1<(T1, T2, T3, T4)>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>>>::Error>
fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4)>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§fn from_ord_bytes<'e>(
bytes: ByteSource<'k, 'e>
) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5)>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>>>::Error>
fn from_ord_bytes<'e>( bytes: ByteSource<'k, 'e> ) -> Result<TupleEncodingV1<(T1, T2, T3, T4, T5)>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>>>::Error>
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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>>>::Error>
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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§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>,
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>,
§const CAN_OWN_BYTES: bool = false
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.§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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>>>::Error>
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<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>>>::Error>
Deserialize a sequence of bytes previously encoded with
KeyEncoding::as_ord_bytes
.§fn first_value() -> Result<Self, NextValueError>
fn first_value() -> Result<Self, NextValueError>
Return the first value in sequence for this type. Not all types
implement this.
§fn next_value(&self) -> Result<Self, NextValueError>
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.
§impl<T1> KeyEncoding<TupleEncodingV1<(T1,)>> for TupleEncodingV1<(T1,)>where
T1: for<'k> Key<'k>,
impl<T1> KeyEncoding<TupleEncodingV1<(T1,)>> for TupleEncodingV1<(T1,)>where T1: for<'k> Key<'k>,
§type Error = CompositeKeyError
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH,) { (Some(t1),) => Some(t1 + 0), _ => None, }
const LENGTH: Option<usize> = match (T1::LENGTH,) { (Some(t1),) => Some(t1 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1,)> as KeyEncoding<TupleEncodingV1<(T1,)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1,)> as KeyEncoding<TupleEncodingV1<(T1,)>>>::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.§impl<T1, T2> KeyEncoding<TupleEncodingV1<(T1, T2)>> for TupleEncodingV1<(T1, T2)>where
T1: for<'k> Key<'k>,
T2: for<'k> Key<'k>,
impl<T1, T2> KeyEncoding<TupleEncodingV1<(T1, T2)>> for TupleEncodingV1<(T1, T2)>where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>,
§type Error = CompositeKeyError
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH) {
(Some(t1), Some(t2)) => Some(t1 + t2 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH) { (Some(t1), Some(t2)) => Some(t1 + t2 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2)> as KeyEncoding<TupleEncodingV1<(T1, T2)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2)> as KeyEncoding<TupleEncodingV1<(T1, T2)>>>::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.§impl<T1, T2, T3> KeyEncoding<TupleEncodingV1<(T1, T2, T3)>> for TupleEncodingV1<(T1, T2, T3)>where
T1: for<'k> Key<'k>,
T2: for<'k> Key<'k>,
T3: for<'k> Key<'k>,
impl<T1, T2, T3> KeyEncoding<TupleEncodingV1<(T1, T2, T3)>> for TupleEncodingV1<(T1, T2, T3)>where T1: for<'k> Key<'k>, T2: for<'k> Key<'k>, T3: for<'k> Key<'k>,
§type Error = CompositeKeyError
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH) {
(Some(t1), Some(t2), Some(t3)) => Some(t1 + t2 + t3 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH) { (Some(t1), Some(t2), Some(t3)) => Some(t1 + t2 + t3 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3)>>>::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.§impl<T1, T2, T3, T4> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>> 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>,
impl<T1, T2, T3, T4> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>> 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
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH) {
(Some(t1), Some(t2), Some(t3), Some(t4)) =>
Some(t1 + t2 + t3 + t4 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH) { (Some(t1), Some(t2), Some(t3), Some(t4)) => Some(t1 + t2 + t3 + t4 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4)>>>::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.§impl<T1, T2, T3, T4, T5> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>> 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>,
impl<T1, T2, T3, T4, T5> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>> 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
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH) {
(Some(t1), Some(t2), Some(t3), Some(t4), Some(t5)) =>
Some(t1 + t2 + t3 + t4 + t5 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH) { (Some(t1), Some(t2), Some(t3), Some(t4), Some(t5)) => Some(t1 + t2 + t3 + t4 + t5 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5)>>>::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.§impl<T1, T2, T3, T4, T5, T6> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>> 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>,
impl<T1, T2, T3, T4, T5, T6> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>> 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
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH)
{
(Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6)) =>
Some(t1 + t2 + t3 + t4 + t5 + t6 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH) { (Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6)) => Some(t1 + t2 + t3 + t4 + t5 + t6 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6)>>>::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.§impl<T1, T2, T3, T4, T5, T6, T7> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>> 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>,
impl<T1, T2, T3, T4, T5, T6, T7> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>> 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
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH,
T7::LENGTH) {
(Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6), Some(t7))
=> Some(t1 + t2 + t3 + t4 + t5 + t6 + t7 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH, T7::LENGTH) { (Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6), Some(t7)) => Some(t1 + t2 + t3 + t4 + t5 + t6 + t7 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7)>>>::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.§impl<T1, T2, T3, T4, T5, T6, T7, T8> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>> 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>,
impl<T1, T2, T3, T4, T5, T6, T7, T8> KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>> 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
type Error = CompositeKeyError
The error type that can be produced by either serialization or
deserialization.
§const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH,
T7::LENGTH, T8::LENGTH) {
(Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6), Some(t7),
Some(t8)) => Some(t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + 0),
_ => None,
}
const LENGTH: Option<usize> = match (T1::LENGTH, T2::LENGTH, T3::LENGTH, T4::LENGTH, T5::LENGTH, T6::LENGTH, T7::LENGTH, T8::LENGTH) { (Some(t1), Some(t2), Some(t3), Some(t4), Some(t5), Some(t6), Some(t7), Some(t8)) => Some(t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + 0), _ => None, }
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
.§fn describe<Visitor>(visitor: &mut Visitor)where
Visitor: KeyVisitor,
fn describe<Visitor>(visitor: &mut Visitor)where Visitor: KeyVisitor,
Describes this type by invoking functions on
visitor
describing the
key being encoded. Read more§fn as_ord_bytes(
&self
) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>>>::Error>
fn as_ord_bytes( &self ) -> Result<Cow<'_, [u8]>, <TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)> as KeyEncoding<TupleEncodingV1<(T1, T2, T3, T4, T5, T6, T7, T8)>>>::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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,
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