pub struct LeafNode {
pub partial: Nibbles,
pub value: ValueRLP,
}Expand description
Leaf Node of an an Ethereum Compatible Patricia Merkle Trie Contains the node’s hash, value & path
Fields§
§partial: Nibbles§value: ValueRLPImplementations§
Source§impl LeafNode
impl LeafNode
Sourcepub const fn new(partial: Nibbles, value: ValueRLP) -> Self
pub const fn new(partial: Nibbles, value: ValueRLP) -> Self
Creates a new leaf node and stores the given (path, value) pair
Sourcepub fn get(&self, path: Nibbles) -> Result<Option<ValueRLP>, TrieError>
pub fn get(&self, path: Nibbles) -> Result<Option<ValueRLP>, TrieError>
Returns the stored value if the given path matches the stored path
Sourcepub fn insert(
&mut self,
path: Nibbles,
value: ValueOrHash,
) -> Result<Option<Node>, TrieError>
pub fn insert( &mut self, path: Nibbles, value: ValueOrHash, ) -> Result<Option<Node>, TrieError>
Stores the received value and returns the new root of the subtrie previously consisting of self
Sourcepub fn remove(
&mut self,
path: Nibbles,
) -> Result<(Option<NodeRemoveResult>, Option<ValueRLP>), TrieError>
pub fn remove( &mut self, path: Nibbles, ) -> Result<(Option<NodeRemoveResult>, Option<ValueRLP>), TrieError>
Removes own value if the path matches own path and returns self and the value if it was removed
Sourcepub fn compute_hash(&self, crypto: &dyn Crypto) -> NodeHash
pub fn compute_hash(&self, crypto: &dyn Crypto) -> NodeHash
Computes the node’s hash
Sourcepub fn compute_hash_no_alloc(
&self,
buf: &mut Vec<u8>,
crypto: &dyn Crypto,
) -> NodeHash
pub fn compute_hash_no_alloc( &self, buf: &mut Vec<u8>, crypto: &dyn Crypto, ) -> NodeHash
Computes the node’s hash, using the provided buffer
Trait Implementations§
Source§impl Archive for LeafNode
impl Archive for LeafNode
Source§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<'de> Deserialize<'de> for LeafNode
impl<'de> Deserialize<'de> for LeafNode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for LeafNode
impl StructuralPartialEq for LeafNode
Auto Trait Implementations§
impl Freeze for LeafNode
impl RefUnwindSafe for LeafNode
impl Send for LeafNode
impl Sync for LeafNode
impl Unpin for LeafNode
impl UnsafeUnpin for LeafNode
impl UnwindSafe for LeafNode
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§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.
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§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 moreSource§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<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§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.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.