72次发布
0.16.0-rc.1 | 2024年2月21日 |
---|---|
0.15.4 | 2023年9月10日 |
0.15.2 | 2023年4月27日 |
0.15.1 | 2023年2月26日 |
0.2.3 | 2020年11月29日 |
#19 in 缓存
555 每月下载量
在 7 个存储库中使用 (6 直接)
1.5MB
37K SLoC
twilight-cache-inmemory
twilight-cache-inmemory
是 twilight-rs
生态系统中的进程内存缓存。它负责处理事件和缓存诸如公会、频道、用户和语音状态等事物。
统计信息
统计信息可以作为确定缓存大小或确定缓存中是否存在预期资源量的重要调试工具。可以通过 InMemoryCache::stats
获取关于缓存中资源量的统计信息。
特性
默认情况下没有启用任何特性。
permission-calculator
启用 permission-calculator
特性标志将引入对 PermissionCalculator
的支持;通过 InMemoryCache::permissions
提供了通过它计算权限的API。包括在根公会级别和公会频道中计算成员权限的支持。
请参阅 permission
模块以获取更多文档。
示例
使用网关接收的事件更新缓存
use std::{env, error::Error};
use twilight_cache_inmemory::DefaultInMemoryCache;
use twilight_gateway::{EventTypeFlags, Intents, Shard, ShardId, StreamExt as _};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
// Initialize the tracing subscriber.
tracing_subscriber::fmt::init();
let token = env::var("DISCORD_TOKEN")?;
let mut shard = Shard::new(ShardId::ONE, token, Intents::GUILD_MESSAGES);
// Create a cache, caching up to 10 messages per channel:
let cache = DefaultInMemoryCache::builder().message_cache_size(10).build();
while let Some(item) = shard.next_event(EventTypeFlags::all()).await {
let Ok(event) = item else {
tracing::warn!(source = ?item.unwrap_err(), "error receiving event");
continue;
};
// Update the cache with the event.
cache.update(&event);
}
Ok(())
}
许可证
所有第一方存储库都采用 ISC 许可证
依赖项
~2.2–8MB
~64K SLoC