Skip to main content

GenericSequence

Trait GenericSequence 

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

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

    // Provided methods
#[doc(hidden)]
fn inverted_zip<B, U, F>( self, lhs: GenericArray<B, Self::Length>, f: F, ) -> MappedSequence<GenericArray<B, Self::Length>, B, U> where GenericArray<B, Self::Length>: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>, Self: MappedGenericSequence<T, U>, Self::Length: ArrayLength<B> + ArrayLength<U>, F: FnMut(B, Self::Item) -> U { ... }
#[doc(hidden)]
fn inverted_zip2<B, Lhs, U, F>( self, lhs: Lhs, f: F, ) -> MappedSequence<Lhs, B, U> where Lhs: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>, Self: MappedGenericSequence<T, U>, Self::Length: ArrayLength<B> + ArrayLength<U>, F: FnMut(Lhs::Item, Self::Item) -> U { ... } }
Expand description

Defines some sequence with an associated length and iteration capabilities.

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

Required Associated Types§

Source

type Length: ArrayLength<T>

GenericArray associated length

Source

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

Concrete sequence type used in conjuction with reference implementations of GenericSequence

Required Methods§

Source

fn generate<F>(f: F) -> Self::Sequence
where 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.

Provided Methods§

Source

#[doc(hidden)]
fn inverted_zip<B, U, F>( self, lhs: GenericArray<B, Self::Length>, f: F, ) -> MappedSequence<GenericArray<B, Self::Length>, B, U>
where GenericArray<B, Self::Length>: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>, Self: MappedGenericSequence<T, U>, Self::Length: ArrayLength<B> + ArrayLength<U>, F: FnMut(B, Self::Item) -> U,

Source

#[doc(hidden)]
fn inverted_zip2<B, Lhs, U, F>( self, lhs: Lhs, f: F, ) -> MappedSequence<Lhs, B, U>
where Lhs: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>, Self: MappedGenericSequence<T, U>, Self::Length: ArrayLength<B> + ArrayLength<U>, F: FnMut(Lhs::Item, Self::Item) -> U,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Implementors§

Source§

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