use protobuf::MessageFull;
use crate::FavCoreResult;
pub trait PathInfo {
const PATH: &'static str;
}
pub trait ProtoLocal: PathInfo + MessageFull {
fn write(self) -> FavCoreResult<()> {
let path = std::path::PathBuf::from(Self::PATH);
let mut file = std::fs::File::create(path)?;
self.write_to_writer(&mut file)?;
Ok(())
}
fn read() -> FavCoreResult<Self> {
let path = std::path::PathBuf::from(Self::PATH);
let mut file = std::fs::File::open(path)?;
Ok(Self::parse_from_reader(&mut file)?)
}
fn remove() {
let path = std::path::PathBuf::from(Self::PATH);
std::fs::remove_file(path).ok(); }
}
impl<T> ProtoLocal for T where T: PathInfo + MessageFull {}