6个版本
0.3.3 | 2022年4月4日 |
---|---|
0.3.2 | 2022年4月1日 |
0.3.1 | 2022年3月24日 |
0.2.0 | 2022年1月4日 |
0.1.0 | 2022年1月3日 |
#935 in 异步
每月21次下载
22KB
283 行
动态超时
在可变持续时间后执行函数。
use std::time::Duration;
use dyn_timeout::std_thread::DynTimeout;
const TWENTY: Duration = Duration::from_millis(20);
let dyn_timeout = DynTimeout::new(TWENTY, || {
println!("after forty milliseconds");
});
dyn_timeout.add(TWENTY).unwrap();
// .sub...
// .cancel
这个库最初是为了用作类似于raft的选举超时。
tokio版本
此crate包含一个带有线程和tokio实现的std,如果您已经使用此异步库,则非常有用。
use tokio::runtime::Runtime;
use dyn_timeout::tokio_impl::DynTimeout;
use std::time::Duration;
const TWENTY: Duration = Duration::from_millis(20);
let mut rt = Runtime::new().unwrap();
rt.spawn(async {
let dyn_timeout = DynTimeout::new(TWENTY, || {
println!("after forty milliseconds");
});
dyn_timeout.add(TWENTY).await.unwrap();
});
基准测试
以下是使用标准实现等待40毫秒的基准测试,时间精度在纳秒以下降低。(使用tokio也会降低精度)
test test::simple_bench ... bench: 40,641,475 ns/iter (+/- 68,064)
贡献
- 所有提高时间精度和代码架构的改进都受欢迎。
- 使用示例、文档、错别字和注释、单元测试。
- 所有有趣的想法也都可以在问题中了解。
- 在GitHub问题中提供反馈,报告错误和错误。
所有开发贡献都必须通过当前的单元测试,并且必须包括新的测试!
许可 GNU通用公共许可证 版本3,2007年6月29日
分发此库的目的是希望它会有用,但没有提供任何保证;甚至没有关于适销性或适用于特定目的的隐含保证。有关详细信息,请参阅GNU通用公共许可证。
依赖项
~2.5–9.5MB
~60K SLoC