3 个不稳定版本
0.2.1 | 2022年5月8日 |
---|---|
0.2.0 |
|
0.1.1 | 2022年2月28日 |
0.1.0 | 2022年2月28日 |
#7 in #token-bucket
37KB
702 代码行
Tocket
此库提供了令牌桶算法的实现和一些存储实现。
[dependencies]
tocket = "0.2"
示例
use tocket::{TokenBucket, InMemoryStorage};
use std::sync::Arc;
use std::time::Duration;
fn main() {
let tb = TokenBucket::new(InMemoryStorage::new(100));
let tb = Arc::new(tb);
for i in 0..4 {
std::thread::spawn({
let tb = Arc::clone(&tb);
move || {
loop {
std::thread::sleep(Duration::from_secs(i));
match tb.try_acquire_one() {
Ok(_) => println!("token acquired, limit not exceeded"),
Err(err) => eprintln!("token acquiring failed: {}", err),
}
}
}
});
}
loop {}
}
特性
redis-impl
- Redis 存储实现distributed-impl
- 分布式存储实现
许可协议
根据您的选择,在Apache License, Version 2.0或MIT 许可协议下授权。除非您明确声明,否则根据 Apache-2.0 许可协议定义的,您有意提交以包含在此软件包中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~2–12MB
~133K SLoC