Rust 无法移出';不和谐;,在';FnMut';关闭

Rust 无法移出';不和谐;,在';FnMut';关闭,rust,move-semantics,Rust,Move Semantics,我正在使用ws-crate制作一个单线程WebSocket服务器。我在这里重现了这个问题: extern crate rustcord; extern crate ws; use rustcord::{Rustcord, User, EventHandlers}; use ws::listen; struct Handlers; impl EventHandlers for Handlers { fn ready(_user: User) { } } fn main() {

我正在使用ws-crate制作一个单线程WebSocket服务器。我在这里重现了这个问题:

extern crate rustcord;
extern crate ws;

use rustcord::{Rustcord, User, EventHandlers};
use ws::listen;

struct Handlers;

impl EventHandlers for Handlers {
    fn ready(_user: User) { }
}

fn main() {
    let discord = Rustcord::init::<Handlers>("<client_id>", true, None)
        .expect("Failed");

    listen("127.0.0.1:8080", |out| {
        move |msg| {
            discord.clear_presence();
            out.send(msg)
        }
    });
}
这是我的Cargo.toml文件:

[package]
name = "fooproject"
version = "0.1.0"
authors = ["entity100011"]
edition = "2018"

[dependencies]
ws = "=0.8.1"
rustcord = "=0.2.2"

我是生锈的新手,不理解“闭包”和其他生锈的东西的整个概念。这个问题的解决方案可能还有其他问题,但我无法理解其中的代码。

您的问题似乎可以用;;;的答案来回答;等如果没有,请回答您的问题以解释差异。否则,我们可以把这个问题标记为已经回答了。@Shepmaster好吧,你知道吗,我会把我想说的写出来do@Shepmaster我想我不明白闭包是什么。我试着在文档中了解它们,但它们确实complicated@KreyLazory我遇到了与ws-rs完全相同的问题,我试图获取服务器的ws::Sender值,这样我就可以在其他频道上循环并向客户端广播。我想我上次解决这个问题的方法是使用一个完全不同的库。通过使用消息传递通道和单独的线程来解决它。看起来您的问题可以用;;;的答案来回答;等如果没有,请回答您的问题以解释差异。否则,我们可以把这个问题标记为已经回答了。@Shepmaster好吧,你知道吗,我会把我想说的写出来do@Shepmaster我想我不明白闭包是什么。我试着在文档中了解它们,但它们确实complicated@KreyLazory我遇到了与ws-rs完全相同的问题,我试图获取服务器的ws::Sender值,这样我就可以在其他频道上循环并向客户端广播。我想我上次解决这个问题的方法是使用一个完全不同的库,通过使用消息传递通道和单独的线程来解决。