[][src]Trait init_trait::Init

pub trait Init<T, I, V = ()>: Sized {
    fn init_with<F: FnMut(I) -> T>(value: V, elem: F) -> Self;

    fn init<F: FnMut(I) -> T>(elem: F) -> Self
    where
        V: TypeEquals<()>
, { ... } }

Types which can be initialised by applying a function to each 'index' of the type.

Required methods

fn init_with<F: FnMut(I) -> T>(value: V, elem: F) -> Self

Initialise an instance of this type using value by applying elem to each 'index' of the type.

Examples

Constructing a Vec containing the values 0 to 4:

use init_trait::Init;
	
let vec = Vec::<usize>::init_with(5, |i| i);
	
assert_eq!(vec, vec![0, 1, 2, 3, 4]);
Loading content...

Provided methods

fn init<F: FnMut(I) -> T>(elem: F) -> Self where
    V: TypeEquals<()>, 

Initialise an instance of this type by applying elem to each 'index' of the type.

This is syntax sugar for init_with((), elem).

Examples

Constructing an array containing the values 0 to 4:

use init_trait::Init;

let arr = <[usize; 5]>::init(|i| i);

assert_eq!(arr, [0, 1, 2, 3, 4]);
Loading content...

Implementations on Foreign Types

impl<T, const N: usize> Init<T, usize, ()> for [T; N][src]

impl<T, const N1: usize, const N2: usize> Init<T, [usize; 2], ()> for [[T; N1]; N2][src]

impl<T, const N1: usize, const N2: usize, const N3: usize> Init<T, [usize; 3], ()> for [[[T; N1]; N2]; N3][src]

impl<T, const N1: usize, const N2: usize, const N3: usize, const N4: usize> Init<T, [usize; 4], ()> for [[[[T; N1]; N2]; N3]; N4][src]

impl<T, const N1: usize, const N2: usize, const N3: usize, const N4: usize, const N5: usize> Init<T, [usize; 5], ()> for [[[[[T; N1]; N2]; N3]; N4]; N5][src]

impl<T, const N1: usize, const N2: usize, const N3: usize, const N4: usize, const N5: usize, const N6: usize> Init<T, [usize; 6], ()> for [[[[[[T; N1]; N2]; N3]; N4]; N5]; N6][src]

impl<T> Init<T, usize, usize> for Vec<T>[src]

Loading content...

Implementors

Loading content...