#未来 #异步 #内部 #重启 #如何 #解析 #

restartables

如果内部未来不满足条件,则重启未来

5个不稳定版本

0.4.2 2020年2月28日
0.4.1 2020年2月27日
0.3.0 2020年2月27日
0.2.0 2020年2月27日
0.1.0 2020年2月27日

#1126 in 异步

MIT 许可证

13KB
92

可重启的未来

Restartables crates.io badge Restartables docs.rs badge

例如,您可能想要持续ping一个URL,直到它返回200或五秒钟过去。如果URL确实返回200,您可能想知道这花了多少时间。

此库包含一个名为 Restartable 的未来包装器。它包装您想要重试的未来,并在您提供的测试通过之前持续重试该未来。如果内部未来通过测试,则包装器解析您的值。但如果内部未来未通过测试,包装器将仅重启未来。假设超时尚未过期。

为此,您需要在实例化包装器时提供三件事

  • 要轮询的未来
  • 一个测试,即一个闭包,它从内部未来中获取值,对其进行测试,并返回结果
  • 一个工厂,用于在之前的未来解析了失败的测试值时创建新未来。

包装器还会返回一些指标,例如,未来解决前经过的时间以及所需的重新启动次数。

要运行示例,

cargo run --example reqwest
cargo run --example rng

依赖关系

~1.5MB
~34K SLoC