1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use std::{ collections::HashMap, sync::{LazyLock, Mutex}, }; static MAP: LazyLock<Mutex<HashMap<u64, (String, u64)>>> = LazyLock::new(|| { Mutex::new(serde_json::from_slice(&std::fs::read("repo/ownership.json").unwrap()).unwrap()) }); pub fn insert(k: u64, v: (String, u64)) { MAP.lock().unwrap().insert(k, v); std::fs::write("repo/ownership.json", serde_json::to_string(&*MAP).unwrap()).unwrap(); } pub fn get(k: u64) -> (String, u64) { MAP.lock().unwrap()[&k].clone() } pub fn erase(k: u64) -> Option<(String, u64)> { let x = MAP.lock().unwrap().remove(&k); std::fs::write("repo/ownership.json", serde_json::to_string(&*MAP).unwrap()).unwrap(); x }