2个不稳定版本
0.2.0 | 2023年8月2日 |
---|---|
0.1.0 | 2023年8月2日 |
#1247 在 数据结构
149 每月下载量
17KB
334 行
定时队列
在给定时间后丢弃其内容的队列。
示例
要实现帧率计数器,可以使用以下技术
use std::thread;
use std::time::Duration;
use ttl_queue::TtlQueue;
fn main() {
let mut fps_counter = TtlQueue::new(Duration::from_secs_f64(1.0));
for i in 0..100 {
// Register a new frame and return the number of frames observed
// within the last second.
let fps = fps_counter.refresh_and_push_back(());
debug_assert!(fps >= 1);
// Sleep 10 ms to achieve a ~100 Hz frequency.
thread::sleep(Duration::from_millis(10));
}
let fps = fps_counter.refresh();
debug_assert!(fps >= 95 && fps <= 105);
}
lib.rs
:
定时队列
在给定时间后丢弃其内容的队列。
包功能
vecdeque
- 使用VecDeque
作为底层数据结构。默认启用。doublestack
- 使用两个栈 (Vec
) 作为底层数据结构。与vecdeque
互斥。tokio
- 使用tokio::time::Instant
而不是std::time::Instant
。
示例
要实现帧率计数器,可以使用以下技术
let mut fps_counter = TtlQueue::new(Duration::from_secs_f64(1.0));
for i in 0..=50 {
// Register a new frame and return the number of frames observed
// within the last second.
let fps = fps_counter.refresh_and_push_back(());
debug_assert!(fps >= 1);
// Sleep ~20 ms to achieve a ~50 Hz frequency.
thread::sleep(Duration::from_millis(19));
}
let fps = fps_counter.refresh();
debug_assert!(fps >= 45 && fps <= 55);
let delta = fps_counter.avg_delta();
debug_assert!(delta >= Duration::from_millis(19) && delta <= Duration::from_millis(21));
依赖关系
~0–1.1MB
~19K SLoC