ArrayExt

Trait ArrayExt 

Source
pub trait ArrayExt: Sealed {
    type Elem;

    // Required methods
    fn generate<F: FnMut(usize) -> Self::Elem>(f: F) -> Self
       where Self: Sized;
    fn try_generate<E, F: FnMut(usize) -> Result<Self::Elem, E>>(
        f: F,
    ) -> Result<Self, E>
       where Self: Sized;
    fn generate_boxed<F: FnMut(usize) -> Self::Elem>(f: F) -> Box<Self>;
}
Expand description

Extension trait for constant sized arrays.

Allows you to initialize an array like this:

use init_array::ArrayExt;

let arr: [usize; 5] = <[usize; 5]>::generate(|i| i * i);
assert_eq!(arr, [0, 1, 4, 9, 16]);

let arr: Box<[usize; 5]> = <[usize; 5]>::generate_boxed(|i| i * i);
assert_eq!(arr, Box::new([0, 1, 4, 9, 16]));

Required Associated Types§

Required Methods§

Source

fn generate<F: FnMut(usize) -> Self::Elem>(f: F) -> Self
where Self: Sized,

Source

fn try_generate<E, F: FnMut(usize) -> Result<Self::Elem, E>>( f: F, ) -> Result<Self, E>
where Self: Sized,

Source

fn generate_boxed<F: FnMut(usize) -> Self::Elem>(f: F) -> Box<Self>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T, const N: usize> ArrayExt for [T; N]

Source§

type Elem = T

Source§

fn generate<F: FnMut(usize) -> Self::Elem>(f: F) -> Self
where Self: Sized,

Source§

fn try_generate<E, F: FnMut(usize) -> Result<Self::Elem, E>>( f: F, ) -> Result<Self, E>
where Self: Sized,

Source§

fn generate_boxed<F: FnMut(usize) -> Self::Elem>(f: F) -> Box<Self>

Implementors§