[英]Cannot move out of captured variable in an `Fn` closure
我对rust-lang非常陌生。 我正在尝试创建我的第一个程序,但是我对rust-lang的所有权/借款不知所措。
那是我的代码:
let core: PackageCore = package_core::init();
let html = include_str!("./html/index.html");
rouille::start_server("0.0.0.0:44", move |request| {
core.send_command();
return Response::html(html.clone());
});
core.start();
可能有人可以在这里帮助我:)
干杯
我已经指出了您的代码段中的问题所在:
let core: PackageCore = package_core::init();
let html = include_str!("./html/index.html");
rouille::start_server("0.0.0.0:44", move |request| {
core.send_command(); // <-- this is where you moved
return Response::html(html.clone());
});
core.start(); // <-- but you need it here outside of the closure
move
core
move
闭包内部,然后在其外部调用start()
。 那是不可能的。 它要么在内部移动,要么在外部。 要解决该问题,您可以将其包装在一个结构中,该结构允许存在多个指向它的指针( Arc
或Rc
是主要候选对象),如果我是对的,并且start()
需要&mut self
,则需要一个保证内部可变性的结构(例如Mutex
, RwLock
或RefCell
是其中的一些),使您可以临时获取对其的可变引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.