use serde::{Serialize, de::DeserializeOwned};
use std::fs::File;
use std::io::{self, BufReader, BufWriter};
use std::path::Path;
pub fn save_json<T: Serialize>(path: &Path, data: &T) -> io::Result<()> {
let file = File::create(path)?;
let writer = BufWriter::new(file);
serde_json::to_writer_pretty(writer, data).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}
pub fn read_json<T: DeserializeOwned>(path: &Path) -> io::Result<T> {
let file = File::open(path)?;
let reader = BufReader::new(file);
serde_json::from_reader(reader).map_err(|e| io::Error::new(io::ErrorKind::Other, e))
}