pub enum CanonicalKey {
Null,
Boolean(bool),
Signed(CanonicalKeyFamily, i64),
Unsigned(CanonicalKeyFamily, u64),
Float(u64),
Text(CanonicalKeyFamily, Arc<str>),
Bytes(CanonicalKeyFamily, Vec<u8>),
PairTextU64(CanonicalKeyFamily, String, u64),
PairTextText(CanonicalKeyFamily, String, String),
PairU32U8(CanonicalKeyFamily, u32, u8),
PairU32U32(CanonicalKeyFamily, u32, u32),
PairI32I32(CanonicalKeyFamily, i32, i32),
}Expand description
Canonical multi-type key used by ordered in-memory indexes.
The ordering is stable and type-aware. Different families never compare equal and range pushdown is only enabled when a column stays within one family. Exact point lookups remain safe even when a column has mixed families because BTree point seeks are still exact on the encoded key.
Variants§
Null
Boolean(bool)
Signed(CanonicalKeyFamily, i64)
Unsigned(CanonicalKeyFamily, u64)
Float(u64)
Text(CanonicalKeyFamily, Arc<str>)
Text-kind values. Arc<str> instead of String so
Value::Text(Arc<str>) roundtrips free (Arc bump) rather than
allocating a new String per encode. Text-like variants built
from String (NodeRef, EdgeRef, Email, Url, TableRef,
Password) pay one Arc::from allocation at encode time — same
cost as the previous String clone. Net: GROUP BY over a
TEXT column stops paying N allocations per scan.
Bytes(CanonicalKeyFamily, Vec<u8>)
PairTextU64(CanonicalKeyFamily, String, u64)
PairTextText(CanonicalKeyFamily, String, String)
PairU32U8(CanonicalKeyFamily, u32, u8)
PairU32U32(CanonicalKeyFamily, u32, u32)
PairI32I32(CanonicalKeyFamily, i32, i32)
Implementations§
Source§impl CanonicalKey
impl CanonicalKey
pub fn family(&self) -> CanonicalKeyFamily
pub fn into_value(self) -> Value
Trait Implementations§
Source§impl Clone for CanonicalKey
impl Clone for CanonicalKey
Source§fn clone(&self) -> CanonicalKey
fn clone(&self) -> CanonicalKey
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 CanonicalKey
impl Debug for CanonicalKey
Source§impl Hash for CanonicalKey
impl Hash for CanonicalKey
Source§impl Ord for CanonicalKey
impl Ord for CanonicalKey
Source§fn cmp(&self, other: &CanonicalKey) -> Ordering
fn cmp(&self, other: &CanonicalKey) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for CanonicalKey
impl PartialEq for CanonicalKey
Source§fn eq(&self, other: &CanonicalKey) -> bool
fn eq(&self, other: &CanonicalKey) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl PartialOrd for CanonicalKey
impl PartialOrd for CanonicalKey
impl Eq for CanonicalKey
impl StructuralPartialEq for CanonicalKey
Auto Trait Implementations§
impl Freeze for CanonicalKey
impl RefUnwindSafe for CanonicalKey
impl Send for CanonicalKey
impl Sync for CanonicalKey
impl Unpin for CanonicalKey
impl UnsafeUnpin for CanonicalKey
impl UnwindSafe for CanonicalKey
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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> 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 moreSource§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