Константа-параметр в Rust
Параметром бывает не только тип, но и число, известное при сборке. Его пишут в угловых скобках рядом с типами и используют в теле как обычную константу. Значение должно быть вычислено до запуска программы.
Запишем функцию, которая возвращает переданное при сборке число:
fn first_n<const N: usize>() -> usize {
N
}
fn main() {
let a = first_n::<3>();
let b = first_n::<10>();
println!("{} {}", a, b);
}
Тот же параметр можно сочетать с обычным именем типа, если функция работает и с видом данных, и с размером:
fn repeat_len<T, const N: usize>(_value: T) -> usize {
N
}
fn main() {
let n = repeat_len::<i32, 4>(0);
println!("{}", n);
}
Дано число:
const LIMIT: usize = 5;
Запишите функцию с константой-параметром,
которая возвращает это число, подставьте
LIMIT как параметр при сборке
и выведите результат.
Дано число:
const MARK: usize = 7;
Запишите функцию с константой-параметром,
подставьте MARK при сборке и
выведите то же число.
Скажите, чем константа-параметр отличается
от обычного параметра функции с типом
usize.