Struct rand_functors::Counter

source ·
pub struct Counter<S: BuildHasher + Default = RandomState, N: Clone + Default + NumAssign + Unsigned = usize> { /* private fields */ }
Expand description

Produces all possible outputs of the random process, with repetition, stored in a HashMap.

Counter is optimal in scenarios where certain operations will map many inputs to the same output. Examples include conditionally zeroing out a field of a struct or the use of functions like saturating_add or saturating_mul.

Trait Implementations§

source§

impl<S: Clone + BuildHasher + Default, N: Clone + Clone + Default + NumAssign + Unsigned> Clone for Counter<S, N>

source§

fn clone(&self) -> Counter<S, N>

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<S: Debug + BuildHasher + Default, N: Debug + Clone + Default + NumAssign + Unsigned> Debug for Counter<S, N>

source§

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

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

impl<S: Default + BuildHasher + Default, N: Default + Clone + Default + NumAssign + Unsigned> Default for Counter<S, N>

source§

fn default() -> Counter<S, N>

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

impl<S: BuildHasher + Default, N: Clone + Default + NumAssign + Unsigned> FlattenableRandomStrategy for Counter<S, N>

source§

fn fmap_flat<A: Inner, B: Inner, F: FnMut(A) -> Self::Functor<B>>( f: Self::Functor<A>, func: F ) -> Self::Functor<B>

Applies the given function to the functor’s inner, flattening one layer of nested structure.
source§

impl<S: Hash + BuildHasher + Default, N: Hash + Clone + Default + NumAssign + Unsigned> Hash for Counter<S, N>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<S: PartialEq + BuildHasher + Default, N: PartialEq + Clone + Default + NumAssign + Unsigned> PartialEq for Counter<S, N>

source§

fn eq(&self, other: &Counter<S, N>) -> 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<S: BuildHasher + Default, N: Clone + Default + NumAssign + Unsigned> RandomStrategy for Counter<S, N>

§

type Functor<I: Inner> = HashMap<I, N, S>

The functor that this strategy operates on. Read more
source§

fn fmap<A: Inner, B: Inner, F: Fn(A) -> B>( f: Self::Functor<A>, func: F ) -> Self::Functor<B>

Applies the given function to the functor’s inner.
source§

fn fmap_rand<A: Inner, B: Inner, R: RandomVariable, F: Fn(A, R) -> B>( f: Self::Functor<A>, _: &mut impl Rng, func: F ) -> Self::Functor<B>

Using the strategy specified by the implementor, applies the given binary function to the given functor and an element of the sample space of a RandomVariable. Read more
source§

fn fmap_rand_range<A: Inner, B: Inner, R: RandomVariable + SampleUniform, F: Fn(A, R) -> B>( f: Self::Functor<A>, range: impl RandomVariableRange<R>, _: &mut impl Rng, func: F ) -> Self::Functor<B>

Using the strategy specified by the implementor, applies the given binary function to the given functor and an element of the sample space of a RandomVariableRange. Read more
source§

impl<S: Copy + BuildHasher + Default, N: Copy + Clone + Default + NumAssign + Unsigned> Copy for Counter<S, N>

source§

impl<S: Eq + BuildHasher + Default, N: Eq + Clone + Default + NumAssign + Unsigned> Eq for Counter<S, N>

source§

impl<S: BuildHasher + Default, N: Clone + Default + NumAssign + Unsigned> StructuralPartialEq for Counter<S, N>

Auto Trait Implementations§

§

impl<S, N> Freeze for Counter<S, N>

§

impl<S, N> RefUnwindSafe for Counter<S, N>

§

impl<S, N> Send for Counter<S, N>
where N: Send, S: Send,

§

impl<S, N> Sync for Counter<S, N>
where N: Sync, S: Sync,

§

impl<S, N> Unpin for Counter<S, N>
where N: Unpin, S: Unpin,

§

impl<S, N> UnwindSafe for Counter<S, N>
where N: UnwindSafe, S: UnwindSafe,

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<I> Functor<I> for I
where I: Inner,

source§

fn pure(i: I) -> I

Produce an instance of Self containing the argument as its inner. Read more
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.
source§

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

source§

fn vzip(self) -> V

source§

impl<T> Inner for T
where T: Clone + Eq + Hash + PartialEq,