1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
//@ compile-flags: -Zmir-opt-level=3
//@ check-pass
#![feature(generic_const_exprs)]
//~^ WARN the feature `generic_const_exprs` is incomplete
#[inline(always)]
fn from_fn_1<const N: usize, F: FnMut(usize) -> f32>(mut f: F) -> [f32; N] {
let mut result = [0.0; N];
let mut i = 0;
while i < N {
result[i] = f(i);
i += 1;
}
result
}
pub struct TestArray<const N: usize>
where
[(); N / 2]:,
{
array: [f32; N / 2],
}
impl<const N: usize> TestArray<N>
where
[(); N / 2]:,
{
fn from_fn_2<F: FnMut(usize) -> f32>(f: F) -> Self {
Self { array: from_fn_1(f) }
}
}
fn main() {
TestArray::<4>::from_fn_2(|i| 0.0);
}
|