我正在使用Rust和tiny-http。我创建了一个函数,在其中我正在处理请求的头部,然后发送响应:
fn handle_request(req: Request) {
let headers = req.headers();
// working with headers
let res = Response::from_string("hi");
req.respond(res);
}
字符串
它失败,并出现错误:
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
型
所以我有点理解req.headers()
接受&self
,它执行借用req
和req.respond()
“移动”req
,因为它接受self
。我不知道我应该做什么,有人能帮助我理解吗?
3条答案
按热度按时间j2qf4p5b1#
在移动值之前,必须确保借用结束。要调整代码:
字符串
借用只会持续到函数顶部的块,所以在块结束后,你可以自由移动
res
。xmjla07d2#
只需报价请求
字符串
gz5pxeao3#
我绞尽脑汁,发现你可以直接将借用的响应转换为拥有的。使用
req.headers.to_owned()