3 个版本
0.1.2 | 2019年5月12日 |
---|---|
0.1.1 | 2019年5月11日 |
0.1.0 | 2019年5月11日 |
#1814 in Rust 模式
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());
}