extension1/
extension1.rs

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}