diff --git a/interface/src/storage.rs b/interface/src/storage.rs index 75fdc5d..9f35dd4 100644 --- a/interface/src/storage.rs +++ b/interface/src/storage.rs @@ -1,4 +1,5 @@ use std::{cell::RefCell, collections::HashMap, fs::File, io::{Read, Write}, path::PathBuf, sync::Arc}; +use anyhow::Result; use dashmap::DashMap; @@ -12,7 +13,7 @@ pub struct StorageManager { impl StorageManager { pub fn new(path: PathBuf) -> Result { - let map = if let Ok(mut file) = File::open(path) { + let map = if let Ok(mut file) = File::open(path.clone()) { let mut vec = Vec::new(); file.read_to_end(&mut vec)?; postcard::from_bytes(&vec)? @@ -28,7 +29,8 @@ impl StorageManager { pub fn save(&self) { let map = postcard::to_stdvec_cobs(&self.map).unwrap(); - let mut backing_file = File::open(self.storage.as_path()).unwrap(); + let mut backing_file = File::options().write(true).truncate(true).create(true) + .open(self.storage.as_path()).unwrap(); backing_file.write_all(&map).unwrap(); }