1use crate::version::Version;
2use anyhow::Result;
3use serde::{Deserialize, Serialize};
4
5pub trait BinarySerializer {
6 const MAJOR: u16;
7 const MINOR: u16;
8
9 fn version() -> Version {
10 Version {
11 major: Self::MAJOR,
12 minor: Self::MINOR,
13 }
14 }
15
16 fn serialize_no_version<T: ?Sized + Serialize>(value: &T) -> Result<Vec<u8>>;
19
20 fn deserialize_no_version<'a, T>(bytes: &'a [u8]) -> Result<T>
21 where
22 T: Deserialize<'a>;
23
24 fn serialize<T: ?Sized + Serialize>(value: &T) -> Result<Vec<u8>>;
25
26 fn deserialize<'a, T>(bytes: &'a [u8]) -> Result<T>
27 where
28 T: Deserialize<'a>;
29}