about summary refs log tree commit diff
path: root/src/util/cache.rs
blob: 6e4672fa645fdf040800c0e67516bd513f22604a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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")
}