rate-limit-macro
is a procedural macro that provides a simple way to rate-limit blocks of code. This crate is part of the logdna-agent-v2 project and is located under common/misc/rate-limit/macro
.
Add the following line to your Cargo.toml
under [dependencies]
:
toml
rate-limit-macro = "0.1.0"
Here's a simple example:
```rust use ratelimitmacro::rate_limit;
let mut called_times = 0;
for _ in 0..10 { ratelimit!(rate = 5, interval = 1, { calledtimes += 1; }); }
// Only 5 calls should have been allowed due to rate limiting. asserteq!(calledtimes, 5); ```
You can also provide an optional fallback block that will be executed when the rate limit is exceeded:
```rust let mut calledtimes = 0; let mut fallbackcalled_times = 0;
for _ in 0..10 { ratelimit!(rate = 5, interval = 1, { calledtimes += 1; }, { fallbackcalledtimes += 1; }); }
// Check that the number of rate-limited calls and fallback calls add up to the total calls. asserteq!(calledtimes + fallbackcalledtimes, 10); ```
rate
: The maximum number of times the block of code can be executed within the specified interval.interval
: The time interval (in seconds) for which the rate
applies.block
: The block of code to be rate-limited.fallback_block
(Optional): A block of code to be executed when the rate limit is exceeded.rate-limit-core
: This is a companion library that contains tests and depends on rate-limit-macro
.The source code for this crate is part of the logdna-agent-v2 GitHub repository.
This crate is licensed under the MIT License.
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.