1 个不稳定版本
0.1.0 | 2021 年 3 月 29 日 |
---|
#258 in 缓存
46KB
686 代码行
Eternity
Eternity 是一个 Rust 库,用于限制速率并可选地缓存键值结果。
两种用例
- 你与一个缺乏官方速率限制的 REST-API 交互,并希望缓存频繁请求。
- 你有一个具有命令的机器人,并希望按用户或全局进行速率限制。
查看示例,了解如何使用此库处理这些情况。
示例
端点的基本限制器
use eternity::{Bucket, BucketBuilder};
use eternity::multi_bucket::{CachedLimitedEnums, ToBucket};
#[derive(Hash, PartialEq, Clone, Eq)]
enum Route {
GetUser(u64),
GetStats,
GetGuild(u64),
}
impl ToBucket<Route, String> for Route {
fn to_bucket(&self) -> Option<Bucket<Route, String>> {
match self {
Self::GetUser(_) => Some(BucketBuilder::new()
.limit(4)
.time_span(10)
.build()),
_ => None,
}
}
}
#[tokio::main]
async fn main() {
let mut limiter: CachedLimitedEnums<Route, String> = CachedLimitedEnums::new();
let result = limiter.cache_or(&Route::GetUser(1), get_user(1));
}
async fn get_user(user_id: u64) -> Option<String> {
Some(format!("eternity-{}", user_id))
}
所有示例
以下是一些示例,展示了此库的用途。
功能
有两个功能,默认情况下不启用。
cache
:启用缓存值的功能。tokio_0_2
:默认情况下,此 crate 支持tokio
v1
,此功能启用v0.2
支持。
安装
将以下内容添加到你的 Cargo.toml
文件中
[dependencies]
eternity = "0.1"
Eternity 至少支持 Rust 1.48。
依赖项
~2.2–4.5MB
~68K SLoC