use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::{BufReader, BufWriter};
use std::path::Path;
pub fn load_bincode<T: for<'de> Deserialize<'de>>(path: &Path) -> Result<T> {
let file = File::open(path)?;
let reader = BufReader::new(file);
let data = bincode::deserialize_from(reader)?;
Ok(data)
}
pub fn save_bincode<T: Serialize>(path: &Path, data: &T) -> Result<()> {
let tmp_path = path.with_extension("tmp");
{
let file = File::create(&tmp_path)?;
let writer = BufWriter::new(file);
bincode::serialize_into(writer, data)?;
}
std::fs::rename(tmp_path, path)?;
Ok(())
}