Я не могу иметь массивы фиксированного размера в аргументах? fn a(arr:

# N])

Вопрос:

В приведенном ниже коде:

 fn a<T,N>(arr: amp; [T; N]) {
    
}
 

почему я получаю

 error[E0423]: expected value, found type parameter `N`
 --> src/lib.rs:1:22
  |
1 | fn a<T,N>(arr: amp; [T; N]) {
  |                      ^ not a value
 

?

https://play.rust-lang.org/?version=stableamp;mode=debugamp;edition=2021amp;gist=8023f8d13b34369ec0453883630617ba

Я знаю, что могу ожидать только amp;[T] , но я предполагаю, что если я ожидаю с фиксированным размером, то это будет более сильная типизация, а также без проверки привязки

Ответ №1:

Сообщение об ошибке сообщает вам: вы объявили N как параметр типа, но массивы ожидают значения. Итак, вам нужно объявить N как значение, как показано, например, в объявлении const generics. Это означает добавление к нему префикса с const ключевым словом и присвоение ему типа:

 fn a<T, const N: usize>(arr: amp;[T; N]) {
    
}