Struct tor_basic_utils::iter::FilterCount

source ·
pub struct FilterCount {
    pub n_accepted: usize,
    pub n_rejected: usize,
}
Expand description

A record of how many items a CountingFilter returned by IteratorExt::filter_cnt accepted and rejected.

In tor-guardmgr we use this type to keep track of which filters reject which guards.

Fields§

§n_accepted: usize

The number of items that the filter considered and accepted.

§n_rejected: usize

The number of items that the filter considered and accepted.

Implementations§

source§

impl FilterCount

source

pub fn display_frac_rejected(&self) -> DisplayFracRejected<'_>

Return a wrapper that can be displayed as the fraction of rejected items.

§Example
let mut count = FilterCount::default();
let sum_of_evens : u32 = (1..=10)
    .filter_cnt(&mut count, |x| *x % 2 == 0)
    .sum();
assert_eq!(format!("Rejected {} as odd", count.display_frac_rejected()),
    "Rejected 5/10 as odd".to_string());
source

pub fn count(&mut self, accept: bool) -> bool

Count and return the provided boolean value.

This is an alternative way to use FilterCount when you have to provide a function that takes a predicate rather than a member of an iterator chain.

§Example
let mut count = FilterCount::default();
let mut emoji = "Hello 🙂 World 🌏!".to_string();
emoji.retain(|ch| count.count(!ch.is_ascii()));
assert_eq!(emoji, "🙂🌏");
assert_eq!(count, FilterCount { n_accepted: 2, n_rejected: 14});

Trait Implementations§

source§

impl Clone for FilterCount

source§

fn clone(&self) -> FilterCount

Returns a copy 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 FilterCount

source§

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

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

impl Default for FilterCount

source§

fn default() -> FilterCount

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

impl PartialEq for FilterCount

source§

fn eq(&self, other: &FilterCount) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for FilterCount

source§

impl Eq for FilterCount

source§

impl StructuralPartialEq for FilterCount

Auto Trait Implementations§

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> 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> ToOwned for T
where T: Clone,

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V