use std::io; use log::error; use shared::error::to_io_error; #[inline] pub fn binary_serialize(value: &T) -> io::Result> where T: ?Sized + serde::Serialize, { rmp_serde::to_vec(value).map_err(to_io_error) } #[inline] pub fn binary_deserialize(value: &[u8]) -> io::Result where T: for<'a> serde::Deserialize<'a>, { rmp_serde::from_slice(value).map_err(|e| { error!("Failed to decode {e}"); to_io_error(e) }) } #[inline] pub fn binary_serialize_into(writer: &mut W, value: &T) -> io::Result<()> where W: io::Write, T: ?Sized + serde::Serialize, { rmp_serde::encode::write(writer, value).map_err(to_io_error) }