Trait init_with::InitWith
[−]
[src]
pub trait InitWith<T> { fn init_with<F>(init: F) -> Self
where
F: FnMut() -> T,
Self: Sized; fn init_with_indices<F>(init: F) -> Self
where
F: FnMut(usize) -> T,
Self: Sized; }
A trait that allows you to create an instance of a type by using a given function to generate each element.
Required Methods
fn init_with<F>(init: F) -> Self where
F: FnMut() -> T,
Self: Sized,
F: FnMut() -> T,
Self: Sized,
Create a new instance of this type using the given function to fill elements.
Examples
Prefilling an array with a Vec, with no unsafe code:
use init_with::InitWith; let src = vec![1, 2, 3]; let dest: [i32; 3] = { let mut idx = 0; <[i32; 3]>::init_with(|| { let val = src[idx]; idx += 1; val }) }; assert_eq!(src, dest);
fn init_with_indices<F>(init: F) -> Self where
F: FnMut(usize) -> T,
Self: Sized,
F: FnMut(usize) -> T,
Self: Sized,
Create a new instance of this type to fill elements by mapping the given function over the new array's indices.
Examples
Prefilling an array of even numbers, with no unsafe code:
use init_with::InitWith; let src = vec![0, 2, 4]; let dest = <[i32; 3]>::init_with_indices(|x| 2*x as i32); assert_eq!(src, dest);
Implementors
impl<T> InitWith<T> for [T; 32]
impl<T> InitWith<T> for [T; 31]
impl<T> InitWith<T> for [T; 30]
impl<T> InitWith<T> for [T; 29]
impl<T> InitWith<T> for [T; 28]
impl<T> InitWith<T> for [T; 27]
impl<T> InitWith<T> for [T; 26]
impl<T> InitWith<T> for [T; 25]
impl<T> InitWith<T> for [T; 24]
impl<T> InitWith<T> for [T; 23]
impl<T> InitWith<T> for [T; 22]
impl<T> InitWith<T> for [T; 21]
impl<T> InitWith<T> for [T; 20]
impl<T> InitWith<T> for [T; 19]
impl<T> InitWith<T> for [T; 18]
impl<T> InitWith<T> for [T; 17]
impl<T> InitWith<T> for [T; 16]
impl<T> InitWith<T> for [T; 15]
impl<T> InitWith<T> for [T; 14]
impl<T> InitWith<T> for [T; 13]
impl<T> InitWith<T> for [T; 12]
impl<T> InitWith<T> for [T; 11]
impl<T> InitWith<T> for [T; 10]
impl<T> InitWith<T> for [T; 9]
impl<T> InitWith<T> for [T; 8]
impl<T> InitWith<T> for [T; 7]
impl<T> InitWith<T> for [T; 6]
impl<T> InitWith<T> for [T; 5]
impl<T> InitWith<T> for [T; 4]
impl<T> InitWith<T> for [T; 3]
impl<T> InitWith<T> for [T; 2]
impl<T> InitWith<T> for [T; 1]
impl<T> InitWith<T> for [T; 0]