pub trait FullGenerate {
    type Item;
    type Generate: Generate<Item = Self::Item>;

    // Required method
    fn generator() -> Self::Generate;
}
Expand description

When implemented for a type T, this allows to retrieve a generator for T that does not require any parameter. It should be implemented for any type that has a canonical way to be generated. To provide a generator with parameters, see IntoGenerate.

For example, this trait is implemented for all non-pointer primitive types and for some standard types (such as Option<T> amd Result<T, E>).

Required Associated Types§

source

type Item

source

type Generate: Generate<Item = Self::Item>

Required Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl FullGenerate for bool

source§

impl FullGenerate for char

source§

impl FullGenerate for f32

source§

impl FullGenerate for f64

source§

impl FullGenerate for i8

§

type Item = i8

§

type Generate = Full<i8>

source§

fn generator() -> Self::Generate

source§

impl FullGenerate for i16

source§

impl FullGenerate for i32

source§

impl FullGenerate for i64

source§

impl FullGenerate for i128

source§

impl FullGenerate for isize

source§

impl FullGenerate for u8

§

type Item = u8

§

type Generate = Full<u8>

source§

fn generator() -> Self::Generate

source§

impl FullGenerate for u16

source§

impl FullGenerate for u32

source§

impl FullGenerate for u64

source§

impl FullGenerate for u128

source§

impl FullGenerate for ()

§

type Item = ()

§

type Generate = ()

source§

fn generator() -> Self::Generate

source§

impl FullGenerate for usize

source§

impl FullGenerate for String

source§

impl<G: FullGenerate + ?Sized> FullGenerate for &G

source§

impl<G: FullGenerate + ?Sized> FullGenerate for &mut G

source§

impl<G: FullGenerate> FullGenerate for Option<G>

source§

impl<G: FullGenerate> FullGenerate for [G]

source§

impl<G: FullGenerate> FullGenerate for Box<[G]>

source§

impl<G: FullGenerate> FullGenerate for Box<G>

source§

impl<G: FullGenerate> FullGenerate for LinkedList<G>

source§

impl<G: FullGenerate> FullGenerate for VecDeque<G>

source§

impl<G: FullGenerate> FullGenerate for Rc<[G]>

source§

impl<G: FullGenerate> FullGenerate for Rc<G>

source§

impl<G: FullGenerate> FullGenerate for Arc<[G]>

source§

impl<G: FullGenerate> FullGenerate for Arc<G>

source§

impl<G: FullGenerate> FullGenerate for Vec<G>

source§

impl<G: FullGenerate<Item = impl Eq + Hash>, S: BuildHasher + Default> FullGenerate for HashSet<G, S>

source§

impl<G: FullGenerate<Item = impl Ord>> FullGenerate for BinaryHeap<G>

source§

impl<G: FullGenerate<Item = impl Ord>> FullGenerate for BTreeSet<G>

source§

impl<G: FullGenerate, E: FullGenerate> FullGenerate for Result<G, E>

source§

impl<G: FullGenerate, const N: usize> FullGenerate for [G; N]

§

type Item = [<G as FullGenerate>::Item; N]

§

type Generate = [<G as FullGenerate>::Generate; N]

source§

fn generator() -> Self::Generate

source§

impl<K: FullGenerate<Item = impl Eq + Hash>, V: FullGenerate, S: BuildHasher + Default> FullGenerate for HashMap<K, V, S>

source§

impl<K: FullGenerate<Item = impl Ord>, V: FullGenerate> FullGenerate for BTreeMap<K, V>

source§

impl<T0: FullGenerate> FullGenerate for (T0,)

§

type Item = (<T0 as FullGenerate>::Item,)

§

type Generate = (<T0 as FullGenerate>::Generate,)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate> FullGenerate for (T0, T1)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate> FullGenerate for (T0, T1, T2)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate> FullGenerate for (T0, T1, T2, T3)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate, T11: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item, <T11 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate, <T11 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate, T11: FullGenerate, T12: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item, <T11 as FullGenerate>::Item, <T12 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate, <T11 as FullGenerate>::Generate, <T12 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate, T11: FullGenerate, T12: FullGenerate, T13: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item, <T11 as FullGenerate>::Item, <T12 as FullGenerate>::Item, <T13 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate, <T11 as FullGenerate>::Generate, <T12 as FullGenerate>::Generate, <T13 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate, T11: FullGenerate, T12: FullGenerate, T13: FullGenerate, T14: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item, <T11 as FullGenerate>::Item, <T12 as FullGenerate>::Item, <T13 as FullGenerate>::Item, <T14 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate, <T11 as FullGenerate>::Generate, <T12 as FullGenerate>::Generate, <T13 as FullGenerate>::Generate, <T14 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

source§

impl<T0: FullGenerate, T1: FullGenerate, T2: FullGenerate, T3: FullGenerate, T4: FullGenerate, T5: FullGenerate, T6: FullGenerate, T7: FullGenerate, T8: FullGenerate, T9: FullGenerate, T10: FullGenerate, T11: FullGenerate, T12: FullGenerate, T13: FullGenerate, T14: FullGenerate, T15: FullGenerate> FullGenerate for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

§

type Item = (<T0 as FullGenerate>::Item, <T1 as FullGenerate>::Item, <T2 as FullGenerate>::Item, <T3 as FullGenerate>::Item, <T4 as FullGenerate>::Item, <T5 as FullGenerate>::Item, <T6 as FullGenerate>::Item, <T7 as FullGenerate>::Item, <T8 as FullGenerate>::Item, <T9 as FullGenerate>::Item, <T10 as FullGenerate>::Item, <T11 as FullGenerate>::Item, <T12 as FullGenerate>::Item, <T13 as FullGenerate>::Item, <T14 as FullGenerate>::Item, <T15 as FullGenerate>::Item)

§

type Generate = (<T0 as FullGenerate>::Generate, <T1 as FullGenerate>::Generate, <T2 as FullGenerate>::Generate, <T3 as FullGenerate>::Generate, <T4 as FullGenerate>::Generate, <T5 as FullGenerate>::Generate, <T6 as FullGenerate>::Generate, <T7 as FullGenerate>::Generate, <T8 as FullGenerate>::Generate, <T9 as FullGenerate>::Generate, <T10 as FullGenerate>::Generate, <T11 as FullGenerate>::Generate, <T12 as FullGenerate>::Generate, <T13 as FullGenerate>::Generate, <T14 as FullGenerate>::Generate, <T15 as FullGenerate>::Generate)

source§

fn generator() -> Self::Generate

Implementors§

source§

impl<G: FullGenerate + ?Sized> FullGenerate for Any<G>
where Any<G::Generate>: Generate,

source§

impl<G: FullGenerate, const N: usize> FullGenerate for Array<G, N>

§

type Item = [<G as FullGenerate>::Item; N]

§

type Generate = Array<<G as FullGenerate>::Generate, N>

source§

impl<T: Default + Clone> FullGenerate for Same<T>

§

type Item = T

§

type Generate = Same<T>