繁体   English   中英

无法移出`Fn`闭包中的捕获变量

[英]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() 那是不可能的。 它要么在内部移动,要么在外部。 要解决该问题,您可以将其包装在一个结构中,该结构允许存在多个指向它的指针( ArcRc是主要候选对象),如果我是对的,并且start()需要&mut self ,则需要一个保证内部可变性的结构(例如MutexRwLockRefCell是其中的一些),使您可以临时获取对其的可变引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM