4个稳定版本
1.0.3 | 2023年11月6日 |
---|---|
1.0.1 | 2023年9月12日 |
#1179 in 过程宏
在 rate-limit-core 中使用
7KB
66 行
Rate-Limit-Macro
简介
rate-limit-macro
是一个提供简单方式对代码块进行速率限制的过程宏。
安装
将以下行添加到你的 Cargo.toml
中的 [dependencies]
rate-limit-macro = "1"
使用
基本使用
这里有一个简单的例子
use rate_limit_macro::rate_limit;
let mut called_times = 0;
for _ in 0..10 {
rate_limit!(rate = 5, interval = 1, {
called_times += 1;
});
}
// Only 5 calls should have been allowed due to rate limiting.
assert_eq!(called_times, 5);
带有回退块
你也可以提供一个可选的回退块,当速率限制超过时将执行它
let mut called_times = 0;
let mut fallback_called_times = 0;
for _ in 0..10 {
rate_limit!(rate = 5, interval = 1, {
called_times += 1;
}, {
fallback_called_times += 1;
});
}
// Check that the number of rate-limited calls and fallback calls add up to the total calls.
assert_eq!(called_times + fallback_called_times, 10);
API文档
rate
: 在指定间隔内代码块可以执行的最大次数。interval
:rate
应用的时间间隔(以秒为单位)。block
: 需要速率限制的代码块。fallback_block
(可选):当速率限制超过时执行的代码块。
注意
- 此宏是无锁的,因此速率限制不是绝对精确的。
相关crate
rate-limit-core
: 这是一个配套库,包含测试并依赖于rate-limit-macro
。
源代码
此crate的源代码位于 dkhokhlov/rate-limit-macro GitHub仓库中。
许可证
此crate受MIT许可证的许可。
作者
- Dmitri Khokhlov [email protected]
贡献
如果你想贡献,请分叉仓库并使用特性分支。拉取请求非常欢迎。
依赖项
~275–730KB
~17K SLoC