use std::{
fs::File,
io::{BufReader, BufWriter},
path::Path,
};
use bincode::serde::{decode_from_std_read, encode_into_std_write};
use tap::Pipe;
use crate::{
TemplateResolver, error::ResolverResult, resolver::bin_code_nostd::bincode_std_cfg,
};
impl TemplateResolver {
pub fn encode_bin<P: AsRef<Path>>(&self, dst_file: P) -> ResolverResult<usize> {
let encode = |dst| encode_into_std_write(self, dst, bincode_std_cfg());
dst_file
.pipe(File::create)?
.pipe(BufWriter::new) .pipe_ref_mut(encode)? .pipe(Ok)
}
pub fn decode_bin<P: AsRef<Path>>(src_file: P) -> ResolverResult<Self> {
let decode = |src| decode_from_std_read::<Self, _, _>(src, bincode_std_cfg());
src_file
.pipe(File::open)? .pipe(BufReader::new) .pipe_ref_mut(decode)? .pipe(Ok)
}
}