pub struct PrefixSet { /* private fields */ }Expand description
A sorted prefix set that has an immutable sorted list of unique keys.
See also PrefixSetMut::freeze.
Implementations§
Source§impl PrefixSet
impl PrefixSet
Sourcepub fn contains(&mut self, prefix: &Nibbles) -> bool
pub fn contains(&mut self, prefix: &Nibbles) -> bool
Returns true if any of the keys in the set has the given prefix
§Note on Mutability
This method requires &mut self (unlike typical contains methods) because it maintains an
internal position tracker (self.index) between calls. This enables significant performance
optimization for sequential lookups in sorted order, which is common during trie traversal.
The index field allows subsequent searches to start where previous ones left off,
avoiding repeated full scans of the prefix array when keys are accessed in nearby ranges.
This optimization was inspired by Silkworm’s implementation and significantly improves incremental state root calculation performance (see PR #2417).
Sourcepub fn contains_range(&mut self, range: Range<&Nibbles>) -> bool
pub fn contains_range(&mut self, range: Range<&Nibbles>) -> bool
Returns true if any key in the set falls within the given half-open range
[start, end).
Like Self::contains, this method maintains the internal index for sequential access
optimization.
Sourcepub fn contains_from(&mut self, start: &Nibbles) -> bool
pub fn contains_from(&mut self, start: &Nibbles) -> bool
Returns true if any key in the set is at or after start.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PrefixSet
impl RefUnwindSafe for PrefixSet
impl Send for PrefixSet
impl Sync for PrefixSet
impl Unpin for PrefixSet
impl UnsafeUnpin for PrefixSet
impl UnwindSafe for PrefixSet
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 moreimpl<T> MaybeDebug for Twhere
T: Debug,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes