use epserde::prelude::*;
#[derive(Epserde, Debug, PartialEq, Eq, Default, Clone)]
struct Data<A> {
a: A,
}
type StringData = Data<Vec<String>>;
fn main() {
let data = StringData {
a: vec!["A".to_owned(), "B".to_owned(), "C".to_owned()],
};
let mut buf = epserde::new_aligned_cursor();
let _bytes_written = data.serialize(&mut buf).unwrap();
buf.set_position(0);
let full = StringData::deserialize_full(&mut buf).unwrap();
println!(
"Full-copy deserialization type: {}",
std::any::type_name::<StringData>(),
);
println!("Value: {:x?}", full);
println!("\n");
let buf = buf.into_inner();
let eps = StringData::deserialize_eps(&buf).unwrap();
println!(
" ε-copy deserialization type: {}",
std::any::type_name::<<StringData as DeserializeInner>::DeserType<'_>>(),
);
println!("Value: {:x?}", eps);
}