调用 Read::read 时应为 &mut [u8]
Expected &mut [u8] when calling Read::read
use std::io::Read;
use std::net::TcpListener;
struct Server<'a> {
ip_addr: &'a str,
}
impl<'a> Server<'a> {
fn receive(&self) {
let mut received_message_buf: [u8; 100];
let tcp_listener = TcpListener::bind(self.ip_addr).unwrap();
tcp_listener.accept().unwrap().0.read(&received_message_buf);
}
}
fn main() {}
我的类型不匹配:
<anon>:13:47: 13:68 error: mismatched types:
expected `&mut [u8]`,
found `&[u8; 100]`
(values differ in mutability) [E0308]
<anon>:13 tcp_listener.accept().unwrap().0.read(&received_message_buf);
^~~~~~~~~~~~~~~~~~~~~
您需要使用 &mut received_message_buf
而不是 &
。
&mut
创建一个可变引用(因此 read()
可以将内容放入您的缓冲区),而 &
创建一个不可变引用。
use std::io::Read;
use std::net::TcpListener;
struct Server<'a> {
ip_addr: &'a str,
}
impl<'a> Server<'a> {
fn receive(&self) {
let mut received_message_buf: [u8; 100];
let tcp_listener = TcpListener::bind(self.ip_addr).unwrap();
tcp_listener.accept().unwrap().0.read(&received_message_buf);
}
}
fn main() {}
我的类型不匹配:
<anon>:13:47: 13:68 error: mismatched types:
expected `&mut [u8]`,
found `&[u8; 100]`
(values differ in mutability) [E0308]
<anon>:13 tcp_listener.accept().unwrap().0.read(&received_message_buf);
^~~~~~~~~~~~~~~~~~~~~
您需要使用 &mut received_message_buf
而不是 &
。
&mut
创建一个可变引用(因此 read()
可以将内容放入您的缓冲区),而 &
创建一个不可变引用。