Struct rand_functors::UniqueEnumerator

source ·
pub struct UniqueEnumerator<S: BuildHasher + Default = RandomState> { /* private fields */ }
Expand description

Produces all possible outputs of the random process, without repetition, stored in a HashSet.

UniqueEnumerator is optimal in scenarios where certain operations will map many inputs to the same output and the user does not care about the relative frequencies of possible outputs.

Trait Implementations§

source§

impl<S: Clone + BuildHasher + Default> Clone for UniqueEnumerator<S>

source§

fn clone(&self) -> UniqueEnumerator<S>

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> Debug for UniqueEnumerator<S>

source§

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

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

impl<S: Default + BuildHasher + Default> Default for UniqueEnumerator<S>

source§

fn default() -> UniqueEnumerator<S>

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

impl<S: BuildHasher + Default> FlattenableRandomStrategy for UniqueEnumerator<S>

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> Hash for UniqueEnumerator<S>

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> PartialEq for UniqueEnumerator<S>

source§

fn eq(&self, other: &UniqueEnumerator<S>) -> 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> RandomStrategy for UniqueEnumerator<S>

§

type Functor<I: Inner> = HashSet<I, 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> Copy for UniqueEnumerator<S>

source§

impl<S: Eq + BuildHasher + Default> Eq for UniqueEnumerator<S>

source§

impl<S: BuildHasher + Default> StructuralPartialEq for UniqueEnumerator<S>

Auto Trait Implementations§

§

impl<S> Freeze for UniqueEnumerator<S>

§

impl<S> RefUnwindSafe for UniqueEnumerator<S>
where S: RefUnwindSafe,

§

impl<S> Send for UniqueEnumerator<S>
where S: Send,

§

impl<S> Sync for UniqueEnumerator<S>
where S: Sync,

§

impl<S> Unpin for UniqueEnumerator<S>
where S: Unpin,

§

impl<S> UnwindSafe for UniqueEnumerator<S>
where 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,