Массив имеет своего рода "параметр" длины. Это не поле, это часть типа:
let x: [u8; 2] = [1, 2];
let y: [u8; 3] = x; // Error here
Тип x
равен [u8; 2]
. Количество элементов всегда 2, а тип элементов всегда u8
.
Поскольку [u8; 2]
и [u8; 3]
являются разными типами, один имеет длину всегда ровно 2 u8
с, а другой * всегда ровно 3 u8
s долго, назначение от x
до y
не выполняется.
При выполнении определенных операций с массивами компилятор имеет специальную встроенную семантику для массивов. Эта встроенная семантика может использовать длину «параметра» (N
в [T; N]
). Вы можете получить доступ к этому значению на уровне типа, используя const
generics, но сейчас это только ночная функция.