#retry #iterator #fail #zero-dependency

map_retry

一个零依赖的特质,提供了与迭代器一起工作的重试函数

3 个版本

0.1.2 2019年5月12日
0.1.1 2019年5月11日
0.1.0 2019年5月11日

#1814 in Rust 模式

MIT 许可证

5KB

Map retry

一个零依赖的特质,在原生迭代器之上提供了 map_retry 函数。

Map retry 包提供了一个特质,允许在失败的结果上重复映射。这对于使用迭代器执行 I/O(如加载网页)很有用。

use map_retry::MapRetry;
fn retry() {
    let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let res: Vec<_> = a.iter().map_retry(|a| do_failable_io(a)).collect();
    assert_eq!(a.len(), res.len());
}

lib.rs:

Map retry 包提供了一个特质,允许在失败的结果上重复映射。这对于使用迭代器执行 I/O(如加载网页)很有用。

map_retry 的行为类似于正常的 map 函数,但返回类型必须是 Result,如果在所有原始项目都处理完毕后返回 Err,则它会尝试再次执行映射函数。结果 顺序 不保证。如果映射在第二次尝试时也失败,则返回最后一个错误。保证输入和输出项目的数量相同。

use map_retry::MapRetry;
#
fn retry() {
    let a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let res: Vec<_> = a.iter().map_retry(|a| do_failable_io(a)).collect();
    assert_eq!(a.len(), res.len());
}

无运行时依赖