Trait bonsaidb::core::key::KeyVisitor
pub trait KeyVisitor {
// Required methods
fn visit_type(&mut self, kind: KeyKind);
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§
fn 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.
fn 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()
.
fn 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.