3个不稳定版本
新版本 0.2.0 | 2024年8月22日 |
---|---|
0.1.1 | 2024年6月27日 |
0.1.0 | 2024年6月27日 |
在进程宏中排名1792
每月下载量21次
在function-compose中使用
20KB
368 代码行
可组合宏使用
同步函数
#[composeable()]
pub fn add_10(a: i32) -> Result<i32, String> {
Ok(a + 10)
}
异步函数
异步函数应返回BoxFuture。
#[composeable()]
pub fn add_async(a: i32, b: i32) -> BoxFuture<'static, Result<i32, String>> {
async move {
let r = a + b;
Ok(r)
}.boxed()
}
Fn Composer中的重试
可组合宏支持在函数返回错误时在指定间隔内重试函数。这在尝试进行数据库调用或连接到网络端点时可能很有用。在继续重试功能之前,请确保已安装https://docs.rs/retry/latest/retry/。
重试机制作为可组合进程宏的一部分实现。以下是将add_10函数配置为在初始失败后重试2次的示例。
use retry::delay::*;
#[composeable(retry = Fixed::from_millis(100).take(2))]
pub fn add_10(a: i32) -> Result<i32, String> {
Ok(a + 10)
}
重试可以应用于同步和异步函数。
对于异步函数,函数的所有参数必须是共享引用或独占引用。
以下是具有重试的异步函数示例。
#[composeable(retry = Fixed::from_millis(100))]
pub fn add_3_arg_ref__non_copy_async<'a>(
a: &'a mut Vec<String>,
b: &'a mut Vec<String>,
c: &'a Vec<String>,
) -> BoxFuture<'a, Result<i32, String>> {
async move {
let r = a.len() + b.len() + c.len();
Ok(r as i32)
}
.boxed()
}
除了固定持续时间重试之外,还可以配置指数延迟。有关所有可用延迟选项,请参阅重试文档https://docs.rs/retry/latest/retry/all.html
依赖项
~3–5MB
~84K SLoC