gpt4 book ai didi

rust - 从 Rust 回显服务器中删除不必要的功能

转载 作者:行者123 更新时间:2023-11-29 08:30:31 24 4
gpt4 key购买 nike

这段代码:

use std::io::{TcpListener, TcpStream};
use std::io::{Acceptor, Listener};

fn main() {
let listener = TcpListener::bind("127.0.0.1", 5555);

// bind the listener to the specified address
let mut acceptor = listener.listen();

// accept connections and process them, spawning a new tasks for each one
for stream in acceptor.incoming() {
match stream {
Err(e) => { /* connection failed */ }
Ok(stream) => {
// connection succeeded
spawn(proc() {
let mut buf: [u8, ..1024] = [0, ..1024];
loop {
let len = stream.read(buf);
let _ = stream.write(buf.slice(0, len.unwrap()));
}
})
}
}
}
}

失败:

    Compiling chat v0.1.0 (file:///home/chris/rust/chat)
src/chat.rs:19:35: 19:41 error: cannot borrow immutable captured outer variable in a proc `stream` as mutable
src/chat.rs:19 let len = stream.read(buf);
^~~~~~
src/chat.rs:20:25: 20:31 error: cannot borrow immutable captured outer variable in a proc `stream` as mutable
src/chat.rs:20 stream.write(buf.slice(0, len.unwrap()));
^~~~~~
error: aborting due to 2 previous errors
Could not compile `chat`.

但如果我将代码更改为:

                spawn(proc() {
fn handle(mut stream: TcpStream) {
let mut buf: [u8, ..1024] = [0, ..1024];
loop {
let len = stream.read(buf);
let _ = stream.write(buf.slice(0, len.unwrap()));
}
}
handle(stream);
})

有效。

有没有办法删除这个句柄函数?

最佳答案

您的代码中的棘手点在于您的模式。当你写这样的东西时:

match foo.bar() {
Some(value) => { ... },
_ => {}
}

您正在声明一个新变量(在我的示例中为 value)并将选项的内容移入其中。它实际上等同于:

let value = foo.bar().unwrap();

所以在这种情况下,没有什么可以禁止用

声明它是可变的
match foo.bar() {
Some(mut value) => { ... },
_ => {}
}

关于rust - 从 Rust 回显服务器中删除不必要的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26265634/

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