diff options
Diffstat (limited to 'base')
-rw-r--r-- | base/src/cache.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/base/src/cache.rs b/base/src/cache.rs index 40c6e7b..9c12d3d 100644 --- a/base/src/cache.rs +++ b/base/src/cache.rs @@ -17,7 +17,7 @@ use std::{ fs::rename, future::Future, hash::{Hash, Hasher}, - io::Seek, + io::{Seek, Write}, path::PathBuf, sync::{ atomic::{AtomicBool, AtomicUsize, Ordering}, @@ -178,13 +178,15 @@ where } } - let location = cache_file(kind, &key, move |mut file| { + let location = cache_file(kind, &key, move |file| { let object = generate()?; + let mut file = std::io::BufWriter::new(file); bincode::encode_into_std_write(&object, &mut file, bincode::config::standard()) .context("encoding cache object")?; + file.flush()?; Ok(()) })?; - let mut file = std::fs::File::open(location.abs())?; + let mut file = std::io::BufReader::new(std::fs::File::open(location.abs())?); let object = bincode::decode_from_std_read::<T, _, _>(&mut file, bincode::config::standard()) .context("decoding cache object")?; let object = Arc::new(object); |