![crates.io version] ![rust 1.48.0+ badge]
Eternity is a Rust library to rate limit and optionally cache keyed results.
Two use cases: - You interact with a REST-API lacking official rate limits and you want to cache frequent requests. - You have a bot with commands and you want to ratelimit them per user or even globally.
View the [examples] on how to use this library for these cases.
A basic limiter for endpoints:
```rust,norun use eternity::{Bucket, BucketBuilder}; use eternity::multibucket::{CachedLimitedEnums, ToBucket};
enum Route { GetUser(u64), GetStats, GetGuild(u64), }
impl ToBucket
async fn main() {
let mut limiter: CachedLimitedEnums
let result = limiter.cache_or(&Route::GetUser(1), get_user(1));
}
async fn getuser(userid: u64) -> Option
```
Here are [examples] to see what this library can be used for.
There are two features and they are not enabled by default.
cache
: Enables functionality to cache values.tokio_0_2
: By default this crate supports tokio
v1
, this feature
enables v0.2
support.Add the following to your Cargo.toml
file:
toml
[dependencies]
eternity = "0.1"
Eternity supports a minimum of Rust 1.48.