无法移出 `client`,这是 `FnMut` 闭包中捕获的变量

问题描述 投票:0回答:0

我知道这个问题被问了很多,但即使看了其他回复,我还是不知道该怎么做才能解决我的问题。

我正在使用 mastodon-async crate 来处理来自 mastodon 用户时间线的事件。对于特定事件,我想将一部分发送到 mqtt 主题。

我正在关注这个example

这就是我的代码现在的样子:

pub async fn mastodon_run() -> Result<()> {
    ...

    let stream = mastodon.stream_user().await?;

    ...

    let (client, mut eventloop) = AsyncClient::new(mqttoptions, 10);

    stream.try_for_each(|event| async move {
        match event {
            Event::Update(status) => {
                match get_media_url(status) {
                    Ok(url) => {
                        client.publish(consts::MASTODON_TOPIC, QoS::AtLeastOnce, false, url);
                    }
                    _ => (),
                };
                //}
            }
            _ => (),
        }
        Ok(())
    }).await?;

    Ok(())
}

mastodon-async crate 使用来自 future-utils 的 try_stream,我尝试使用 try_for_each 以外的东西,比如我看到的折叠方法可以解决我的问题,但我没有找到如何让它工作。

rust closures
© www.soinside.com 2019 - 2024. All rights reserved.