backoff 0.4.0中map_err结合Transient错误处理的报错咨询
解决backoff 0.4.0中Transient错误的参数问题
在backoff 0.4.0版本里,backoff::Error::Transient的构造确实需要两个参数,而非你以为的一个:
- 第一个参数:具体的错误实例(比如你的业务错误)
- 第二个参数:布尔值
retryable,用来标记该临时错误是否允许重试
错误写法(触发你遇到的报错)
return Err(backoff::Error::Transient(your_error));
正确写法
根据你的业务场景判断是否允许重试,传入对应的布尔值:
// 允许重试的临时错误 return Err(backoff::Error::Transient(your_error, true)); // 不允许重试的临时错误 return Err(backoff::Error::Transient(your_error, false));
补充说明
backoff 0.4.0中Transient的定义是一个包含两个字段的结构体:
pub struct Transient<E> { pub err: E, pub retryable: bool, }
你之前的写法只传了err字段,缺少retryable字段,所以触发参数不匹配的报错。
内容的提问来源于stack exchange,提问作者dearn44
相关产品推荐
相关产品推荐

