1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use std::path::Path;
use prost::Message;
use crate::ModelProto;
#[derive(Debug)]
pub enum Error {
Io(std::io::Error),
Decode(prost::DecodeError),
Encode(prost::EncodeError),
}
pub fn open_model<P: AsRef<Path>>(path: P) -> Result<ModelProto, Error> {
let body = std::fs::read(path).map_err(|e| Error::Io(e))?;
ModelProto::decode(body.as_slice()).map_err(|e| Error::Decode(e))
}
pub fn save_model<P: AsRef<Path>>(path: P, model: &ModelProto) -> Result<(), Error> {
let mut body = Vec::new();
model.encode(&mut body).map_err(|e| Error::Encode(e))?;
std::fs::write(path, body).map_err(|e| Error::Io(e))?;
Ok(())
}