pub(crate) use bincode::config::standard as bincode_std_cfg;
use tap::Pipe;
use crate::{TemplateResolver, error::ResolverResult};
impl TemplateResolver {
pub fn decode_bin_from_slice(slice: &[u8]) -> ResolverResult<(Self, usize)> {
bincode::serde::decode_from_slice(slice, bincode_std_cfg())?.pipe(Ok)
}
pub fn encode_bin_to_vec(&self) -> ResolverResult<alloc::vec::Vec<u8>> {
bincode::serde::encode_to_vec(self, bincode_std_cfg())?.pipe(Ok)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
#[ignore]
#[cfg(feature = "std")]
fn bench_encode_bin() -> ResolverResult<()> {
use testutils::simple_benchmark;
use crate::TemplateResolver;
let res: TemplateResolver =
[("🐱", "喵 ฅ(°ω°ฅ)"), ("hello", "{🐱}")].try_into()?;
simple_benchmark(|| res.encode_bin_to_vec());
let _data = res.encode_bin_to_vec()?;
Ok(())
}
}