From 3c943cee902ef75076ec514ab60ca1ede1d2b504 Mon Sep 17 00:00:00 2001 From: jaynlo Date: Fri, 23 May 2025 16:42:50 +0800 Subject: [PATCH] Update ch17-02-concurrency-with-async.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 循坏->循环 --- src/ch17-02-concurrency-with-async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch17-02-concurrency-with-async.md b/src/ch17-02-concurrency-with-async.md index 6c8cdf5..c6ea220 100644 --- a/src/ch17-02-concurrency-with-async.md +++ b/src/ch17-02-concurrency-with-async.md @@ -173,7 +173,7 @@ hi number 9 from the first task! 除了发送消息之外,我们还需要接收它们。在这个例子中我们可以手动接收,就是调用四次 `rx.recv().await`,因为我们知道进来了多少条消息。然而,在现实世界中,我们通常会等待 *未知* 数量的消息。这时我们需要一直等待直到可以确认没有更多消息了为止。 -在示例 16-10 中,我们使用了 `for` 循坏来处理从异步信道接收的所有消息。然而,Rust 目前还没有在 *异步* 序列上编写 `for` 循环的方法。取而代之的是,我们需要一个我们还没有见过的新循环类型,即 `while let` 条件循环。`while let` 循环是我们在第六章中见过的 `if let` 结构的循环版本。只要其指定的模式持续匹配循环就会一直执行。 +在示例 16-10 中,我们使用了 `for` 循环来处理从异步信道接收的所有消息。然而,Rust 目前还没有在 *异步* 序列上编写 `for` 循环的方法。取而代之的是,我们需要一个我们还没有见过的新循环类型,即 `while let` 条件循环。`while let` 循环是我们在第六章中见过的 `if let` 结构的循环版本。只要其指定的模式持续匹配循环就会一直执行。 `rx.recv` 调用产生一个 `Future`,我们会 await 它。运行时会暂停 `Future` 直到它就绪。一旦消息到达,future 会解析为 `Some(message)`,每次消息到达时都会如此。。当信道关闭时,不管是否有 *任何* 消息到达,future 都会解析为 `None` 来表明没有更多的值了,我们也就应该停止轮询,也就是停止等待。