use serde_derive::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Default)]
pub struct User {
id: u64,
name: String,
}
fn main() {
let mut preshared_map = pot::ser::SymbolMap::new();
preshared_map.populate_from(&User::default()).unwrap();
println!("Preshared symbols: {preshared_map:?}");
let original_user = User {
id: 42,
name: String::from("ecton"),
};
let encoded_without_map = pot::to_vec(&original_user).unwrap();
let encoded_with_map = preshared_map.serialize_to_vec(&original_user).unwrap();
println!(
"Default User encoded without map: {} bytes",
encoded_without_map.len()
);
println!(
"Default User encoded with map: {} bytes",
encoded_with_map.len()
);
assert!(encoded_with_map.len() < encoded_without_map.len());
let preshared_map_bytes = pot::to_vec(&preshared_map).unwrap();
let mut deserializer_map: pot::de::SymbolMap = pot::from_slice(&preshared_map_bytes).unwrap();
let user: User = deserializer_map
.deserialize_slice(&encoded_with_map)
.unwrap();
assert_eq!(user, original_user);
}
#[test]
fn runs() {
main();
}