25 lines
644 B
Rust
25 lines
644 B
Rust
#![allow(incomplete_features)]
|
|
#![feature(const_closures, const_trait_impl)]
|
|
|
|
const fn create_array<const N: usize>(mut f: impl FnMut(usize) -> u32 + Copy) -> [u32; N] {
|
|
let mut array = [0; N];
|
|
let mut i = 0;
|
|
loop {
|
|
array[i] = f(i);
|
|
//~^ ERROR the trait bound `impl FnMut(usize) -> u32 + Copy: [const] FnMut(usize)` is not satisfied [E0277]
|
|
i += 1;
|
|
if i == N {
|
|
break;
|
|
}
|
|
}
|
|
array
|
|
}
|
|
|
|
fn main() {
|
|
let x = create_array(const |i| 2 * i as u32);
|
|
assert_eq!(x, [0, 2, 4, 6, 8]);
|
|
|
|
let y = create_array(const |i| 2 * i as u32 + 1);
|
|
assert_eq!(y, [1, 3, 5, 7, 9]);
|
|
}
|