pub struct SplitBlockBloom { /* private fields */ }Expand description
Split-block bloom filter. Build once at compile time, probe at query time. Zero-allocation probe path.
Implementations§
Source§impl SplitBlockBloom
impl SplitBlockBloom
Sourcepub fn with_capacity(n: usize) -> Self
pub fn with_capacity(n: usize) -> Self
Build a filter sized for n elements with ~1% FPR.
Sourcepub fn probe(&self, key: u32) -> bool
pub fn probe(&self, key: u32) -> bool
Return true if key may be in the set (false positives possible).
Return false if key is definitely absent (no false negatives).
Sourcepub fn num_blocks(&self) -> usize
pub fn num_blocks(&self) -> usize
Number of blocks allocated (each block = 32 bytes).
Sourcepub fn to_bytes(&self) -> Vec<u8> ⓘ
pub fn to_bytes(&self) -> Vec<u8> ⓘ
Serialize to a self-describing blob: a 4-byte LE block count followed
by num_blocks × 8 little-endian u32 words. The block count is
always a power of two, so from_bytes can rebuild
the modulo mask without storing it. Used to persist a per-granule
bloom in a sealed columnar chunk’s footer (#855).
Sourcepub fn from_bytes(bytes: &[u8]) -> Option<Self>
pub fn from_bytes(bytes: &[u8]) -> Option<Self>
Rebuild a filter from to_bytes. Returns None on a
truncated blob or a non-power-of-two block count (a corrupt mask would
silently mis-route probes and could manufacture false negatives, so we
refuse it rather than risk under-inclusion).
Trait Implementations§
Source§impl Clone for SplitBlockBloom
impl Clone for SplitBlockBloom
Source§fn clone(&self) -> SplitBlockBloom
fn clone(&self) -> SplitBlockBloom
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SplitBlockBloom
impl Debug for SplitBlockBloom
impl Eq for SplitBlockBloom
Source§impl PartialEq for SplitBlockBloom
impl PartialEq for SplitBlockBloom
Source§fn eq(&self, other: &SplitBlockBloom) -> bool
fn eq(&self, other: &SplitBlockBloom) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for SplitBlockBloom
Auto Trait Implementations§
impl Freeze for SplitBlockBloom
impl RefUnwindSafe for SplitBlockBloom
impl Send for SplitBlockBloom
impl Sync for SplitBlockBloom
impl Unpin for SplitBlockBloom
impl UnsafeUnpin for SplitBlockBloom
impl UnwindSafe for SplitBlockBloom
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request