Skip to main content

KeyCodec

Struct KeyCodec 

Source
pub struct KeyCodec { /* private fields */ }
Expand description

Bit-packed key layout: a small prefix id in the leading reserved bits, payload in the remainder.

For example, with 4 reserved bits the first nibble selects the prefix and the rest of the key carries the encoded logical payload.

Implementations§

Source§

impl KeyCodec

Source

pub const fn new(reserved_bits: u8, prefix: u16) -> Self

Build a codec with reserved_bits high bits reserved for prefix.

Source

pub const fn reserved_bits(self) -> u8

The number of reserved high bits at the start of the key.

Source

pub const fn prefix(self) -> u16

Family id stored in the reserved high bits.

Source

pub const fn min_key_len(self) -> usize

Minimum key length in bytes needed to store this codec’s reserved bits.

Source

pub const fn max_payload_capacity_bytes(self) -> usize

Maximum logical payload bytes that can ever fit under this codec.

Source

pub const fn payload_capacity_bytes(self) -> usize

Maximum logical payload bytes that fit under this codec.

This reflects the global physical key cap rather than a per-key fixed width. Families that need an exact key length should use Self::payload_capacity_bytes_for_key_len.

Source

pub const fn payload_capacity_bytes_for_key_len(self, key_len: usize) -> usize

Maximum logical payload bytes that fit in a key of key_len bytes.

Source

pub const fn min_key_len_for_payload(self, payload_len: usize) -> usize

Smallest physical key length that can store payload_len bytes.

Source

pub const fn payload_bit_offset(self, payload_byte_offset: usize) -> usize

Absolute bit offset for a payload byte offset within the physical key.

Source

pub fn new_key_with_len( self, total_bytes: usize, ) -> Result<KeyMut, KeyCodecError>

Create a zero-filled key buffer with the prefix id written in the reserved bits.

Source

pub fn new_key(self) -> Key

Create the shortest zero-filled key for this prefix.

Source

pub fn encode(self, payload: &[u8]) -> Result<Key, KeyCodecError>

Encode an entire logical payload into a physical key.

Source

pub fn decode( self, key: &Key, payload_len: usize, ) -> Result<Vec<u8>, KeyCodecError>

Decode payload_len bytes from a key that belongs to this codec.

Source

pub fn write_payload( self, key: &mut KeyMut, payload_byte_offset: usize, bytes: &[u8], ) -> Result<(), KeyCodecError>

Write logical payload bytes at a byte offset within the shifted payload.

Source

pub fn fill_payload( self, key: &mut KeyMut, payload_byte_offset: usize, len: usize, value: u8, ) -> Result<(), KeyCodecError>

Fill a payload byte range with a repeated byte value.

Source

pub fn read_payload( self, key: &Key, payload_byte_offset: usize, len: usize, ) -> Result<Vec<u8>, KeyCodecError>

Read logical payload bytes at a byte offset within the shifted payload.

Source

pub fn read_payload_exact<const N: usize>( self, key: &Key, payload_byte_offset: usize, ) -> Result<[u8; N], KeyCodecError>

Read an exact-size payload slice into an array.

Source

pub fn copy_payload( self, src: &Key, src_payload_byte_offset: usize, dst: &mut KeyMut, dst_payload_byte_offset: usize, len: usize, ) -> Result<(), KeyCodecError>

Copy payload bytes from one codec-managed key into another.

Source

pub fn matches(self, key: &Key) -> bool

True when the key belongs to this codec prefix.

Source

pub fn prefix_bounds_for_len( self, total_bytes: usize, ) -> Result<(Key, Key), KeyCodecError>

Inclusive lower and upper bounds for keys in this prefix with a fixed byte length.

Source

pub fn prefix_bounds(self) -> (Key, Key)

Inclusive lower and upper bounds for this prefix across the full supported key-length domain.

Trait Implementations§

Source§

impl Clone for KeyCodec

Source§

fn clone(&self) -> KeyCodec

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for KeyCodec

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for KeyCodec

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for KeyCodec

Source§

fn eq(&self, other: &KeyCodec) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for KeyCodec

Source§

impl Eq for KeyCodec

Source§

impl StructuralPartialEq for KeyCodec

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more