pub struct RadixMap<V, const KEY_BYTES: usize> { /* private fields */ }Expand description
A structurally-compressed sparse binary radix merkle map (option “b”).
Keys are [u8; KEY_BYTES] (MSB-first); values are V: HashTreeRoot. The
root is canonical and binding (see the module docs). Storage is the
strictly-ascending sorted set of (key, MissingOr<V>) entries; the tree
structure is recomputed on HashTreeRoot::hash_tree_root.
Implementations§
Source§impl<V, const KEY_BYTES: usize> RadixMap<V, KEY_BYTES>
impl<V, const KEY_BYTES: usize> RadixMap<V, KEY_BYTES>
Sourcepub fn get(&self, key: &[u8; KEY_BYTES]) -> Option<&MissingOr<V>>
pub fn get(&self, key: &[u8; KEY_BYTES]) -> Option<&MissingOr<V>>
Look up an entry by key. O(log n).
Sourcepub fn insert(
&mut self,
key: [u8; KEY_BYTES],
value: MissingOr<V>,
) -> Option<MissingOr<V>>
pub fn insert( &mut self, key: [u8; KEY_BYTES], value: MissingOr<V>, ) -> Option<MissingOr<V>>
Insert (or overwrite) an entry, keeping the sorted invariant.
Returns the previous value at key, if any. O(n) (sorted shift).
Sourcepub fn remove(&mut self, key: &[u8; KEY_BYTES]) -> Option<MissingOr<V>>
pub fn remove(&mut self, key: &[u8; KEY_BYTES]) -> Option<MissingOr<V>>
Remove the entry at key, returning its previous value if present.
Trait Implementations§
Source§impl<V, const KEY_BYTES: usize> Archive for RadixMap<V, KEY_BYTES>
impl<V, const KEY_BYTES: usize> Archive for RadixMap<V, KEY_BYTES>
Source§type Archived = <RadixMapRepr<V, KEY_BYTES> as Archive>::Archived
type Archived = <RadixMapRepr<V, KEY_BYTES> as Archive>::Archived
The archived representation of this type. Read more
Source§type Resolver = <RadixMapRepr<V, KEY_BYTES> as Archive>::Resolver
type Resolver = <RadixMapRepr<V, KEY_BYTES> as Archive>::Resolver
The resolver for this type. It must contain all the additional
information from serializing needed to make the archived type from
the normal type.
Source§fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
Creates the archived version of this value at the given position and
writes it to the given output. Read more
§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
An optimization flag that allows the bytes of this type to be copied
directly to a writer instead of calling
serialize. Read moreSource§impl<V: Decode, const KEY_BYTES: usize> Decode for RadixMap<V, KEY_BYTES>
impl<V: Decode, const KEY_BYTES: usize> Decode for RadixMap<V, KEY_BYTES>
Source§fn is_ssz_fixed_len() -> bool
fn is_ssz_fixed_len() -> bool
true iff this type is fixed-length.Source§fn ssz_fixed_len() -> usize
fn ssz_fixed_len() -> usize
Number of bytes this type occupies in the fixed-length portion of a
container encoding. Variable-length types return
BYTES_PER_LENGTH_OFFSET.Source§fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError>
fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError>
Decode a full instance from
bytes, rejecting trailing input.Source§impl<V, D, const KEY_BYTES: usize> Deserialize<RadixMap<V, KEY_BYTES>, D> for <RadixMapRepr<V, KEY_BYTES> as Archive>::Archivedwhere
V: Archive + Clone,
MissingOr<V>: Archive,
<RadixMapRepr<V, KEY_BYTES> as Archive>::Archived: Deserialize<RadixMapRepr<V, KEY_BYTES>, D>,
D: Fallible + ?Sized,
impl<V, D, const KEY_BYTES: usize> Deserialize<RadixMap<V, KEY_BYTES>, D> for <RadixMapRepr<V, KEY_BYTES> as Archive>::Archivedwhere
V: Archive + Clone,
MissingOr<V>: Archive,
<RadixMapRepr<V, KEY_BYTES> as Archive>::Archived: Deserialize<RadixMapRepr<V, KEY_BYTES>, D>,
D: Fallible + ?Sized,
Source§impl<V: Encode, const KEY_BYTES: usize> Encode for RadixMap<V, KEY_BYTES>
impl<V: Encode, const KEY_BYTES: usize> Encode for RadixMap<V, KEY_BYTES>
Source§fn is_ssz_fixed_len() -> bool
fn is_ssz_fixed_len() -> bool
true iff this type is fixed-length (no variable-length fields).Source§fn ssz_fixed_len() -> usize
fn ssz_fixed_len() -> usize
Number of bytes this type occupies in the fixed-length portion of a
container encoding. For variable-length types this returns
BYTES_PER_LENGTH_OFFSET (i.e. the size of the offset slot).Source§fn ssz_bytes_len(&self) -> usize
fn ssz_bytes_len(&self) -> usize
Total size of
self when serialized.Source§fn ssz_append(&self, buf: &mut Vec<u8>)
fn ssz_append(&self, buf: &mut Vec<u8>)
Append the encoding of
self to buf.Source§fn is_basic_type() -> bool
fn is_basic_type() -> bool
true for “basic” SSZ types (uintN, bool), which pack adjacent
elements into shared 32-byte chunks for merkleization. Composite
types (containers, lists, structs) return false (the default).Source§impl<V: HashTreeRoot, const KEY_BYTES: usize> HashTreeRoot for RadixMap<V, KEY_BYTES>
impl<V: HashTreeRoot, const KEY_BYTES: usize> HashTreeRoot for RadixMap<V, KEY_BYTES>
Source§impl<V, S, const KEY_BYTES: usize> Serialize<S> for RadixMap<V, KEY_BYTES>where
V: Archive + Clone,
MissingOr<V>: Archive,
RadixMapRepr<V, KEY_BYTES>: Serialize<S>,
S: Fallible + ?Sized,
impl<V, S, const KEY_BYTES: usize> Serialize<S> for RadixMap<V, KEY_BYTES>where
V: Archive + Clone,
MissingOr<V>: Archive,
RadixMapRepr<V, KEY_BYTES>: Serialize<S>,
S: Fallible + ?Sized,
impl<V: Eq, const KEY_BYTES: usize> Eq for RadixMap<V, KEY_BYTES>
Auto Trait Implementations§
impl<V, const KEY_BYTES: usize> Freeze for RadixMap<V, KEY_BYTES>
impl<V, const KEY_BYTES: usize> RefUnwindSafe for RadixMap<V, KEY_BYTES>where
V: RefUnwindSafe,
impl<V, const KEY_BYTES: usize> Send for RadixMap<V, KEY_BYTES>where
V: Send,
impl<V, const KEY_BYTES: usize> Sync for RadixMap<V, KEY_BYTES>where
V: Sync,
impl<V, const KEY_BYTES: usize> Unpin for RadixMap<V, KEY_BYTES>where
V: Unpin,
impl<V, const KEY_BYTES: usize> UnsafeUnpin for RadixMap<V, KEY_BYTES>
impl<V, const KEY_BYTES: usize> UnwindSafe for RadixMap<V, KEY_BYTES>where
V: UnwindSafe,
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
The archived counterpart of this type. Unlike
Archive, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Creates the archived version of the metadata for this value.
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T, S> SerializeUnsized<S> for Twhere
T: Serialize<S>,
S: Fallible + Writer + ?Sized,
impl<T, S> SerializeUnsized<S> for Twhere
T: Serialize<S>,
S: Fallible + Writer + ?Sized,
§fn serialize_unsized(
&self,
serializer: &mut S,
) -> Result<usize, <S as Fallible>::Error>
fn serialize_unsized( &self, serializer: &mut S, ) -> Result<usize, <S as Fallible>::Error>
Writes the object and returns the position of the archived type.