| Crates.io | lru-cache-rs |
| lib.rs | lru-cache-rs |
| version | 0.1.0 |
| created_at | 2025-05-16 07:34:41.366365+00 |
| updated_at | 2025-05-16 07:34:41.366365+00 |
| description | lru cache |
| homepage | |
| repository | https://github.com/ibatanov/lru-cache-rs |
| max_upload_size | |
| id | 1676178 |
| size | 12,054 |
Потокобезопасный кеш с политикой вытеснения Least Recently Used (LRU), поддержкой TTL и ограничениями по размеру.
Добавьте в Cargo.toml:
[dependencies]
lru-cache-rs = { path = "./lru-cache-rs" }
use lru_cache_rs::SafeLRUCache;
use std::time::Duration;
// Создать кеш на 100 элементов с максимальным размером 1MB
let cache = SafeLRUCache::new(100, Some(1024 * 1024));
Добавление элемента:
// Без TTL
cache.put("key1", "value1", None, 10);
// С TTL (5 секунд)
cache.put("key2", "value2", Some(Duration::from_secs(5)), 20);
Получение элемента:
if let Some(value) = cache.get(&"key1") {
println!("Found: {}", value);
}
Очистка просроченных элементов:
cache.clear_expired();
capacity: максимальное количество элементовmax_size: максимальный общий размер в байтах (опционально)ttl: время жизни элемента (опционально)size: размер элемента в байтах (используется для ограничения по размеру)use std::thread;
let cache = SafeLRUCache::new(2, None);
cache.put("a", 1, None, 1);
cache.put("b", 2, None, 1);
assert_eq!(cache.get(&"a"), Some(1));
// Добавление нового элемента вытеснит "b" (по принципу LRU)
cache.put("c", 3, None, 1);
assert_eq!(cache.get(&"b"), None);