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}