pub fn from_fn<T, const N: usize, F>(cb: F) -> [T; N]where
F: FnMut(usize) -> T,
Expand description
创建一个 [T; N] 类型的数组,其中每个元素 T
都是使用该元素的索引从 cb
返回的值。
Arguments
cb
: 回调,其中传入的参数是当前数组索引。
Example
// 类型推断在这里帮助我们,`from_fn` 知道要产生多少元素的方式是那里的数组长度: 只能比较长度相等的数组,因此推断 const 泛型参数 `N` 为 5,从而创建数组 5 个元素。
let array = core::array::from_fn(|i| i);
// 索引是: 0 1 2 3 4
assert_eq!(array, [0, 1, 2, 3, 4]);
let array2: [usize; 8] = core::array::from_fn(|i| i * 2);
// 索引是: 0 1 2 3 4 5 6 7
assert_eq!(array2, [0, 2, 4, 6, 8, 10, 12, 14]);
let bool_arr = core::array::from_fn::<_, 5, _>(|i| i % 2 == 0);
// 索引是: 0 1 2 3 4
assert_eq!(bool_arr, [true, false, true, false, true]);
Run