Trait bonsaidb_core::key::KeyVisitor
source · pub trait KeyVisitor {
// Required methods
fn visit_type(&mut self, kind: KeyKind);
fn visit_other(&mut self, kind: impl Into<Cow<'static, str>>);
fn visit_composite(&mut self, kind: CompositeKind, count: usize);
fn visit_composite_attribute(
&mut self,
key: impl Into<Cow<'static, str>>,
value: impl Into<KeyAttibuteValue>
);
}
Expand description
A Visitor for information about a KeyEncoding
.
This trait is used in KeyEncoding::describe
to report information about
the type of data contained within the key. Using this information,
generically interpreting the bytes of a key type can be possible as long as
the key type uses CompositeKeyEncoder
.
This trait is not something that most users will ever need to implement.
Instead,
KeyDescription::for_key()
/KeyDescription::for_encoding()
are
built-in functions to retrieve the information reported by this trait in an
easier-to-use interface.
Required Methods§
sourcefn visit_type(&mut self, kind: KeyKind)
fn visit_type(&mut self, kind: KeyKind)
Report that a basic key type is encoded next in this key.
sourcefn visit_other(&mut self, kind: impl Into<Cow<'static, str>>)
fn visit_other(&mut self, kind: impl Into<Cow<'static, str>>)
Report that a custom type is encoded next as a single byte sequence in this key.
sourcefn visit_composite(&mut self, kind: CompositeKind, count: usize)
fn visit_composite(&mut self, kind: CompositeKind, count: usize)
Report that a composite type made up of count
fields is encoded next in
this key.
KeyVisitor
implementations may panic if there are less than or more
than count
fields reported by either visit_type()
or
visit_composite()
.
sourcefn visit_composite_attribute(
&mut self,
key: impl Into<Cow<'static, str>>,
value: impl Into<KeyAttibuteValue>
)
fn visit_composite_attribute( &mut self, key: impl Into<Cow<'static, str>>, value: impl Into<KeyAttibuteValue> )
Report that the current composite type has extra metadata.
This can be used to encode const generic parameters that are helpful in
interpretting the contents of a type. For example,
LimitedResolutionTimestamp
uses this function to report the TimeEpoch
’s nanoseconds since the
Unix epoch.