避免围绕异步块克隆的模式

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

我只是想知道在将参数移动到异步块之前是否有更好、更惯用的克隆参数的方法?

例如在下面的代码中:

use tokio::sync::mpsc;

#[tokio::main]
async fn main() {
    let (tx, mut rx) = mpsc::channel(32);
    let tx2 = tx.clone();

    tokio::spawn(async move {
        tx.send("sending from first handle").await;
    });

    tokio::spawn(async move {
        tx2.send("sending from second handle").await;
    });

    while let Some(message) = rx.recv().await {
        println!("GOT = {}", message);
    }
}

在这种情况下,它只是 tx2,但如果有多个具有多个参数的 spawn,则克隆开始变得过多。

有时我猜想可以使用 for 循环/迭代器来避免重复,但想知道人们是否使用其他模式,也许在结构中捕获多个参数?

谢谢

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