Я создаю изменяемый буфер [u8]
следующим образом:
let buffer: &mut [u8] = &mut [0u8; 34];
и использую здесь:
repr.emit(&mut *buffer, &caps.checksum);
и заимствую здесь:
assert_eq!(processor!(iface).process_ip_payload(&mut ip, &mut socket_set, Instant::from_millis(0), &mut *buffer), Ok(Some(expected_repr)));
Я получаю:
размер значений типа [u8]
не может быть известен во время компиляции
не имеет размера, известного во время компиляции
для ...,&mut *buffer)
повторного заимствования (последнего, при assert).
Размер исходного буфера известен во время компиляции. Почему при повторном заимствовании размер неизвестен?
Вот подписи, если нужно:
pub fn emit<T: AsRef<[u8]> + AsMut<[u8]>>(
&self,
buffer: T,
_checksum_caps: &ChecksumCapabilities,
)
fn process_ip_payload<'frame, T: AsRef<[u8]>>(
&mut self,
ip: &mut ip::Processor,
sockets: &mut SocketSet,
timestamp: Instant,
frame: &'frame T,
) -> Result<Option<ip::Packet<'frame>>>