2 个版本

0.1.1 2024年7月25日
0.1.0 2024年7月25日

175日期和时间

Download history 71/week @ 2024-07-19 159/week @ 2024-07-26 7/week @ 2024-08-02 22/week @ 2024-08-09

259 每月下载量

MIT 许可协议

5KB

简单的速率限制器

在不需要频繁重复操作的情况下很有用。例如,防止日志中充满相同的消息。

示例

use std::{thread, time::Duration};

use ratelim::RateLimiter;
use tracing::warn;

fn main() {
    let mut lim_warn_oddities = RateLimiter::new(Duration::from_millis(10));

    let mut n = 0;
    for i in 0..1000 {
        lim_warn_oddities.run(|| {
            if i % 2 != 0 {
                warn!("{} is odd. Oh my!", i);
                n += 1;
            }
        });
        thread::sleep(Duration::from_micros(100));
    }
    assert!(0 < n && n < 10);
}

lib.rs:

简单的速率限制器。

示例

#
// We don't want to overwater plants. Twice a second should be fine?
let mut lim_water_plants = RateLimiter::new(Duration::from_millis(500));

let mut n = 0;
for _ in 0..5 {
    lim_water_plants.run(|| {
        println!("Watering plants... 🌱🔫");
        n += 1;
    });
    thread::sleep(Duration::from_millis(200));
}
assert_eq!(n, 2);

无运行时依赖