小编jee*_*cat的帖子

处理流时如何删除或忽略错误?

我有一个很长的期货清单,我想使用Stream::buffer_unordered/运行它们Stream::buffered。我将这个流合并到一个 future 中for_each,然后用 Tokio 执行它。其中一个期货返回错误是很常见的。根据文档,for_each返回错误时将停止。

当返回这些错误时,如何忽略或只打印一条消息并继续执行后续的 future?

这是与我的情况类似的一般代码:

use futures::stream;
use futures::stream::Stream;
use futures::future::err;
use futures::future::ok;
use tokio;

fn main() {
    let queries: Vec<u32> = (0..10).collect();
    let futures = queries.into_iter().map(move |num| {
        println!("Started {}", num);
        // Maybe throw error
        let future = match num % 3 {
            0 => ok::<u32, u32>(num),
            _ => err::<u32, u32>(num)
        };
        future
    });

    let stream = stream::iter_ok(futures);
    let num_workers = 8;
    let future = stream
        .buffer_unordered(num_workers)
        .map_err(|err| …
Run Code Online (Sandbox Code Playgroud)

future rust

4
推荐指数
1
解决办法
2517
查看次数

标签 统计

future ×1

rust ×1