diff options
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/cache.rs | 24 | ||||
| -rw-r--r-- | src/util/mod.rs | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/util/cache.rs b/src/util/cache.rs new file mode 100644 index 0000000..6e4672f --- /dev/null +++ b/src/util/cache.rs @@ -0,0 +1,24 @@ +use std::env; + +use cached::DiskCache; +use directories::BaseDirs; +use serde::{Serialize, de::DeserializeOwned}; + +pub fn make_cache<K, V>(name: &str) -> DiskCache<K, V> +where + K: ToString, + V: Serialize + DeserializeOwned, +{ + let dir = match BaseDirs::new() { + Some(base_dirs) => base_dirs.cache_dir().join("lleap"), + None => env::current_dir() + .expect("unable to determine current directory") + .join("lleap_cache"), + }; + + DiskCache::new(name) + .set_disk_directory(dir) + .set_sync_to_disk_on_cache_change(true) + .build() + .expect("unable to open disk cache") +} diff --git a/src/util/mod.rs b/src/util/mod.rs index 4d19eff..2098a35 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,3 +1,5 @@ +mod cache; mod tracker; +pub use cache::make_cache; pub use tracker::Tracker; |