gr/
cache.rs

1use crate::io::{HttpResponse, ResponseField};
2
3pub mod filesystem;
4pub mod inmemory;
5pub mod nocache;
6
7use crate::Result;
8pub use inmemory::InMemoryCache;
9pub use nocache::NoCache;
10
11pub trait Cache<K = String> {
12    fn get(&self, key: &K) -> Result<CacheState>;
13    fn set(&self, key: &K, value: &HttpResponse) -> Result<()>;
14    fn update(&self, key: &K, value: &HttpResponse, field: &ResponseField) -> Result<()>;
15}
16
17pub enum CacheState {
18    Stale(HttpResponse),
19    Fresh(HttpResponse),
20    None,
21}