#iterator #retry #added #processing #lib #top #future

retryiter

A wrapper lib on top of rust Iterator with added retry support

8 个不稳定版本 (3 个重大变更)

0.4.4 2021年2月26日
0.4.3 2021年2月26日
0.3.0 2021年2月6日
0.2.0 2021年1月31日
0.1.0 2021年1月26日

#1502 in Rust 模式

每月 29 次下载
cobust 中使用

MIT 许可证

30KB
404

RetryIter

Crates.io MIT licensed Actions Status

RetryIter crate 为所有 std::iter::Iterator 类型添加了重试支持。它是通过为所有 std::iter::Iterator 实现 crate 的 IntoRetryIter 来实现的。除了重试支持外,此 crate 的主要功能是在异步处理中保留迭代器项,以防止 std::future::Future 取消。这已在 Crate 的主要功能 部分中用示例说明。

文档

该 crate 的文档可在 doc.rs 上找到

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
retryiter = "0.4"

示例

use retryiter::{IntoRetryIter};

#[derive(Debug, Clone, PartialEq)]
struct ValueError;

let a = vec![1, 2, 3];

// Initializing retryiter with retry count 1.
// Also defined the error that can occur in while processing the item.
let mut iter = a.into_iter().retries::<ValueError>(1);

for item in &mut iter {
    if item == 3 {
        // Always failing for value 3.
        item.failed(ValueError);
    } else if item < 3 && item.attempt() == 1 {
        // Only fail on first attempt. The item with value 1 or 2 will
        // succeed on second attempt.
        item.failed(ValueError);
    } else {
        // Marking success for all the other case.
        item.succeeded();
    }
}
assert_eq!(vec![(3, ValueError)], iter.failed_items())

许可证

本项目采用 MIT 许可证

无运行时依赖