Struct Filter

Source
pub struct Filter(/* private fields */);
Expand description

Inventory filter used for subscriptions and inventory comparison.

The Default instance has all bits set to 1, ie. it will match everything.

Implementations§

Source§

impl Filter

Source

pub fn new(ids: impl IntoIterator<Item = RepoId>) -> Filter

Create a new filter with the given items.

Uses the iterator’s size hint to determine the size of the filter.

Source

pub fn empty() -> Filter

Empty filter with nothing set.

Source

pub fn size(&self) -> usize

Size in bytes.

Methods from Deref<Target = BloomFilter<RepoId>>§

Source

pub fn insert(&mut self, item: &K)

Set an item in the Bloom filter. This operation is idempotent with regards to each unique item. Each item must implement the Hash trait.

Source

pub fn contains(&self, item: &K) -> bool

Return whether or not a given item is likely in the Bloom filter or not. There is a possibility for a false positive with the probability being under the Bloom filter’s p value, but a false negative will never occur.

Source

pub fn clear(&mut self)

Set all bits to zero.

Source

pub fn bits(&self) -> usize

Return the number of bits in this filter.

Source

pub fn hashes(&self) -> usize

Number of hashes used (k parameter).

Source

pub fn count(&self) -> usize

Count the approximate number of items in the filter.

Source

pub fn similarity(&self, other: &BloomFilter<K>) -> f64

Compute the approximate similarity between two filters using the Jaccard Index.

Source

pub fn overlap(&self, other: &BloomFilter<K>) -> f64

Compute the approximate overlap between two filters using the overlap coefficient.

Source

pub fn union(&self, other: &BloomFilter<K>) -> BloomFilter<K>

Compute the union of two Bloom filters.

Source

pub fn intersection(&self, other: &BloomFilter<K>) -> BloomFilter<K>

Compute the intersection of two Bloom filters.

Source

pub fn is_comparable(&self, other: &BloomFilter<K>) -> bool

Check whether two filters can be compared, intersected and unioned.

Source

pub fn as_bytes(&self) -> &[u8]

Return the underlying bytes storage.

Trait Implementations§

Source§

impl Clone for Filter

Source§

fn clone(&self) -> Filter

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 Filter

Source§

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

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

impl Decode for Filter

Source§

fn decode(buf: &mut impl Buf) -> Result<Filter, Error>

Source§

impl Default for Filter

Source§

fn default() -> Filter

Returns the “default value” for a type. Read more
Source§

impl Deref for Filter

Source§

type Target = BloomFilter<RepoId>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<Filter as Deref>::Target

Dereferences the value.
Source§

impl DerefMut for Filter

Source§

fn deref_mut(&mut self) -> &mut <Filter as Deref>::Target

Mutably dereferences the value.
Source§

impl Encode for Filter

Source§

fn encode(&self, buf: &mut impl BufMut)

Source§

impl From<BloomFilter<RepoId>> for Filter

Source§

fn from(bloom: BloomFilter<RepoId>) -> Filter

Converts to this type from the input type.
Source§

impl PartialEq for Filter

Source§

fn eq(&self, other: &Filter) -> 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 Eq for Filter

Source§

impl StructuralPartialEq for Filter

Auto Trait Implementations§

§

impl Freeze for Filter

§

impl RefUnwindSafe for Filter

§

impl Send for Filter

§

impl Sync for Filter

§

impl Unpin for Filter

§

impl UnwindSafe for Filter

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

Compare self to key and return true if they are equal.
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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> IntoInit<ZeroInit> for T

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,