Trait bonsaidb_core::key::Key
source · [−]pub trait Key<'k>: Clone + Debug + Send + Sync {
type Error: AnyError;
const LENGTH: Option<usize>;
fn as_ord_bytes(&'k self) -> Result<Cow<'k, [u8]>, Self::Error>;
fn from_ord_bytes(bytes: &'k [u8]) -> Result<Self, Self::Error>;
fn first_value() -> Result<Self, NextValueError> { ... }
fn next_value(&self) -> Result<Self, NextValueError> { ... }
}Expand description
A trait that enables a type to convert itself into a memcmp-compatible
sequence of bytes.
Associated Types
Associated Constants
Required methods
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.
Deserialize a sequence of bytes previously encoded with
Self::as_ord_bytes.
Provided methods
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.
Implementations on Foreign Types
sourceimpl<'a, T1, T2, T3, T4> Key<'a> for (T1, T2, T3, T4) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
impl<'a, T1, T2, T3, T4> Key<'a> for (T1, T2, T3, T4) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
sourceimpl<'a, T1, T2, T3, T4, T5> Key<'a> for (T1, T2, T3, T4, T5) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
impl<'a, T1, T2, T3, T4, T5> Key<'a> for (T1, T2, T3, T4, T5) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
sourceimpl<'a, T1, T2, T3, T4, T5, T6> Key<'a> for (T1, T2, T3, T4, T5, T6) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
impl<'a, T1, T2, T3, T4, T5, T6> Key<'a> for (T1, T2, T3, T4, T5, T6) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
sourceimpl<'a, T1, T2, T3, T4, T5, T6, T7> Key<'a> for (T1, T2, T3, T4, T5, T6, T7) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
T7: Key<'a>,
impl<'a, T1, T2, T3, T4, T5, T6, T7> Key<'a> for (T1, T2, T3, T4, T5, T6, T7) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
T7: Key<'a>,
sourceimpl<'a, T1, T2, T3, T4, T5, T6, T7, T8> Key<'a> for (T1, T2, T3, T4, T5, T6, T7, T8) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
T7: Key<'a>,
T8: Key<'a>,
impl<'a, T1, T2, T3, T4, T5, T6, T7, T8> Key<'a> for (T1, T2, T3, T4, T5, T6, T7, T8) where
T1: Key<'a>,
T2: Key<'a>,
T3: Key<'a>,
T4: Key<'a>,
T5: Key<'a>,
T6: Key<'a>,
T7: Key<'a>,
T8: Key<'a>,
sourceimpl<'a> Key<'a> for Signed
impl<'a> Key<'a> for Signed
type Error = Error
const LENGTH: Option<usize>
fn as_ord_bytes(&self) -> Result<Cow<'a, [u8]>, Self::Error>
fn from_ord_bytes(bytes: &'a [u8]) -> Result<Self, Self::Error>
fn first_value() -> Result<Self, NextValueError>
fn next_value(&self) -> Result<Self, NextValueError>
sourceimpl<'a> Key<'a> for Unsigned
impl<'a> Key<'a> for Unsigned
type Error = Error
const LENGTH: Option<usize>
fn as_ord_bytes(&'a self) -> Result<Cow<'a, [u8]>, Self::Error>
fn from_ord_bytes(bytes: &'a [u8]) -> Result<Self, Self::Error>
fn first_value() -> Result<Self, NextValueError>
fn next_value(&self) -> Result<Self, NextValueError>
sourceimpl<'a, T> Key<'a> for Option<T> where
T: Key<'a>,
impl<'a, T> Key<'a> for Option<T> where
T: Key<'a>,
sourcefn as_ord_bytes(&'a self) -> Result<Cow<'a, [u8]>, Self::Error>
fn as_ord_bytes(&'a self) -> Result<Cow<'a, [u8]>, Self::Error>
Panics
Panics if T::into_big_endian_bytes returns an empty IVec.