pub unsafe trait GenericSequence<T>: Sized + IntoIterator {
    type Length: ArrayLength;
    type Sequence: GenericSequence<T, Length = Self::Length> + FromIterator<T>;

    // Required method
    fn generate<F>(f: F) -> Self::Sequence
       where F: FnMut(usize) -> T;
}
Expand description

Defines some sequence with an associated length and iteration capabilities.

This is useful for passing N-length generic arrays as generics.

Safety

Care must be taken when implementing such that methods are safe.

Lengths must match, and element drop on panic must be handled.

Required Associated Types§

source

type Length: ArrayLength

GenericArray associated length

source

type Sequence: GenericSequence<T, Length = Self::Length> + FromIterator<T>

Owned sequence type used in conjuction with reference implementations of GenericSequence

Required Methods§

source

fn generate<F>(f: F) -> Self::Sequencewhere F: FnMut(usize) -> T,

Initializes a new sequence instance using the given function.

If the generator function panics while initializing the sequence, any already initialized elements will be dropped.

Implementations on Foreign Types§

source§

impl<'a, T: 'a, S: GenericSequence<T>> GenericSequence<T> for &'a mut Swhere &'a mut S: IntoIterator,

§

type Length = <S as GenericSequence<T>>::Length

§

type Sequence = <S as GenericSequence<T>>::Sequence

source§

fn generate<F>(f: F) -> Self::Sequencewhere F: FnMut(usize) -> T,

source§

impl<'a, T: 'a, S: GenericSequence<T>> GenericSequence<T> for &'a Swhere &'a S: IntoIterator,

§

type Length = <S as GenericSequence<T>>::Length

§

type Sequence = <S as GenericSequence<T>>::Sequence

source§

fn generate<F>(f: F) -> Self::Sequencewhere F: FnMut(usize) -> T,

source§

impl<T, N: ArrayLength> GenericSequence<T> for Box<GenericArray<T, N>>

Available on crate feature alloc only.
§

type Length = N

§

type Sequence = Box<GenericArray<T, N>, Global>

source§

fn generate<F>(f: F) -> Self::Sequencewhere F: FnMut(usize) -> T,

Implementors§

source§

impl<T, N: ArrayLength> GenericSequence<T> for GenericArray<T, N>where Self: IntoIterator<Item = T>,

§

type Length = N

§

type Sequence = GenericArray<T, N>