我正在玩Rust和tiny-http.我创建了一个函数,其中我正在弄乱请求的标题然后发送响应:
fn handle_request(req: Request) {
let headers = req.headers();
// working with headers
let res = Response::from_string("hi");
req.respond(res);
}
Run Code Online (Sandbox Code Playgroud)
它失败并出现错误:
main.rs:41:5: 41:8 error: cannot move out of `req` because it is borrowed
main.rs:41 req.respond(res);
^~~
main.rs:27:19: 27:22 note: borrow of `req` occurs here
main.rs:27 let headers = req.headers();
^~~
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)
所以我有点理解,req.headers()接受&self哪个进行借用req和req.respond()"移动",req因为它接受self.我不确定我应该在这做什么,有人可以帮我理解吗?
在移动值之前,您已确保借用已结束.要调整您的代码:
fn handle_request(req: Request) {
{
let headers = req.headers();
// working with headers
}
let res = Response::from_string("hi");
req.respond(res);
}
Run Code Online (Sandbox Code Playgroud)
借用只会持续到函数顶部的块,因此在块结束后,您可以自由移动res.
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |