light_cache/cache/
no_policy.rs

1use crate::LightCache;
2use std::hash::{BuildHasher, Hash};
3
4/// The [NoPolicy] trait is used for external policy implementations.
5/// 
6/// These methods are explicity kept seperate outside the crate to not pollute the API.
7pub trait NoPolicy<K, V, P> {
8    fn get_no_policy(&self, key: &K) -> Option<V>;
9
10    fn insert_no_policy(&self, key: K, value: V) -> Option<V>;
11
12    fn remove_no_policy(&self, key: &K) -> Option<V>;
13
14    fn policy(&self) -> &P;
15}
16
17impl<K, V, S, P> NoPolicy<K, V, P> for LightCache<K, V, S, P>
18where
19    K: Eq + Hash + Copy,
20    V: Clone + Sync,
21    S: BuildHasher,
22{
23    #[inline]
24    fn get_no_policy(&self, key: &K) -> Option<V> {
25        self.get_no_policy(key)
26    }
27
28    #[inline]
29    fn insert_no_policy(&self, key: K, value: V) -> Option<V> {
30        self.insert_no_policy(key, value)
31    }
32
33    #[inline]
34    fn remove_no_policy(&self, key: &K) -> Option<V> {
35        self.remove_no_policy(key)
36    }
37
38    #[inline]
39    fn policy(&self) -> &P {
40        self.policy()
41    }
42}