use apache_avro::{AvroSchema, SpecificSingleObjectReader, SpecificSingleObjectWriter};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, AvroSchema, PartialEq)]
struct Test {
a: i64,
b: String,
}
fn main() -> anyhow::Result<()> {
let mut buffer: Vec<u8> = Vec::new();
let test = Test {
a: 27,
b: "foo".to_string(),
};
let mut writer = SpecificSingleObjectWriter::<Test>::with_capacity(1024)?;
match writer.write(test.clone(), &mut buffer) {
Ok(bytes_written) => {
assert_eq!(bytes_written, 15);
assert_eq!(
buffer,
vec![195, 1, 166, 59, 243, 49, 82, 230, 8, 161, 54, 6, 102, 111, 111]
);
}
Err(err) => {
panic!("Error during serialization: {err:?}");
}
}
let reader = SpecificSingleObjectReader::<Test>::new()?;
let read = reader.read(&mut buffer.as_slice())?;
assert_eq!(test, read);
Ok(())
}