| Crates.io | lru-cache-rs |
| lib.rs | lru-cache-rs |
| version | 0.1.1 |
| created_at | 2025-05-16 07:34:41.366365+00 |
| updated_at | 2025-09-30 08:22:25.044386+00 |
| description | lru cache |
| homepage | |
| repository | https://github.com/ibatanov/lru-cache-rs |
| max_upload_size | |
| id | 1676178 |
| size | 17,942 |
Высокопроизводительная реализация кеша с алгоритмом вытеснения LRU (Least Recently Used) и поддержкой времени жизни записей.
Box и NonNull для управления памятьюK: Eq + Hash + Clone) и значений (V)use lru_cache_rs::LruCache;
use std::time::Duration;
let mut cache = LruCache::new(2); // Создаём кеш ёмкостью 2 элемента
// Добавляем значения
cache.put("a", 1, None); // Без ограничения времени
cache.put("b", 2, Some(Duration::from_secs(1))); // С временем жизни 1 секунда
// Получаем значения
assert_eq!(cache.get(&"a"), Some(&1));
assert_eq!(cache.get(&"b"), Some(&2));
// Вытеснение по LRU
cache.put("c", 3, None); // Вытеснит "a", если он использовался давнее всех
new(capacity: usize, cleanup_mode: CleanupMode) -> Self - Создание нового кеша указанной ёмкости + опция включения evict_expired при операциях
вставки/чтенияput(key: K, value: V, ttl: Option<Duration>) - Добавление элементаget(key: &K) -> Option<&V> - Получение элемента (неизменяемая ссылка)get_mut(key: &K) -> Option<&mut V> - Получение элемента (изменяемая ссылка)CleanupMode::OnAccess - Автоматическая очистка при каждом доступеCleanupMode::OnDemand - Только при ручном вызове evict_expired() (ручное управление)len() -> usize - Текущее количество элементовis_empty() -> bool - Проверка на пустотуcapacity() -> usize - Максимальная ёмкость кешаevict_expired - ручная очитка по ttl