gpt4 book ai didi

rust - 为什么重新借用 &mut[u8] 使其大小在编译时未知?

转载 作者:行者123 更新时间:2023-12-03 11:45:28 27 4
gpt4 key购买 nike

我正在创建一个可变的 [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)));

我得到:

the size for values of type [u8] cannot be known at compilation time

doesn't have a size known at compile-time



...,&mut *buffer)重新借用(最后一个,在断言时)。

原始缓冲区的大小在编译时是已知的。为什么再借使大小未知?

如果需要,这里是签名:
    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>>>

最佳答案

不要取消引用 buffer当您将其作为参数传入时:

assert_eq!(processor!(iface).process_ip_payload(
&mut ip, &mut socket_set, Instant::from_millis(0), &mut buffer),
Ok(Some(expected_repr)));

( &mut buffer 而不是 &mut *buffer )。

关于rust - 为什么重新借用 &mut[u8] 使其大小在编译时未知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com