Function core::array::from_fn

1.63.0 · source ·
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