// *** before: ***
// длина массива не была параметром типа, поэтому писали по срезу
// и теряли её из типа - или размножали код макросом
fn sum(values: &[i32]) -> i32 {
values.iter().sum()
}
// *** in version 1.51: ***
// длина - обычный параметр типа, известный при сборке
fn sum<const N: usize>(values: [i32; N]) -> i32 {
values.iter().sum()
}
struct Matrix<const ROWS: usize, const COLS: usize> {
cells: [[f64; COLS]; ROWS],
}
println!("{}", sum([1, 2, 3]));