1use messagepack_rs::deserializable::Deserializable;
2use messagepack_rs::extension::Extension;
3use messagepack_rs::serializable::Serializable;
4use messagepack_rs::value::Value;
5use std::io::{BufReader, Cursor};
6
7#[derive(Clone, Debug, PartialEq)]
8struct Rgba {
9 r: u8,
10 g: u8,
11 b: u8,
12 a: u8,
13}
14
15impl From<Rgba> for Value {
16 fn from(value: Rgba) -> Self {
17 Self::Extension(Extension { t: 0, data: vec![value.r, value.g, value.b, value.a] })
18 }
19}
20
21fn main() {
22 let rgba = Rgba { r: 5, g: 10, b: 15, a: 20 };
23 let value = Value::from(rgba);
24 println!("{:?}", value);
25
26 let serialized_value = value.serialize().unwrap();
27 println!("{:?}", serialized_value);
28
29 let deserialized_value = Value::deserialize(&mut BufReader::new(Cursor::new(serialized_value))).unwrap();
30 println!("{:?}", deserialized_value);
31}