let some_datagram [u8; 8] = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
let a : &[u8; 2] = some_datagram[0..2];
let b : &[u8; 4] = some_datagram[2..6];
let c : &[u8; 2] = some_datagram[6..8];
Выше не будет работать, потому что some_datagram[0..2]
это &[u8]
, а не &[u8; 2]
. Это имеет смысл при использовании других типов Range*
, когда начальная / конечная точки неизвестны во время компиляции. Я знаю, что есть реализация TryInto
для &[u8]
в &[u8; n]
, но, поскольку все это известно во время компиляции, мне мешает иметь дело с ошибкой, которая, как я знаю, не может произойти.
Есть ли альтернативный метод, кроме []
, который возвращает массив фиксированного размера? Возможно стандартный макрос?