#rate-limiting #proc-macro #limit #blocks #procedural #fallback

rate-limit-macro

提供一种简单方式对代码块进行速率限制的过程宏

4个稳定版本

1.0.3 2023年11月6日
1.0.1 2023年9月12日

#1179 in 过程宏


rate-limit-core 中使用

MIT 许可证

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(可选):当速率限制超过时执行的代码块。

注意

  • 此宏是无锁的,因此速率限制不是绝对精确的。
  • rate-limit-core: 这是一个配套库,包含测试并依赖于 rate-limit-macro

源代码

此crate的源代码位于 dkhokhlov/rate-limit-macro GitHub仓库中。

许可证

此crate受MIT许可证的许可。

作者

贡献

如果你想贡献,请分叉仓库并使用特性分支。拉取请求非常欢迎。

依赖项

~275–730KB
~17K SLoC