orbyte 0.0.6

A serialization/deserialization library
Documentation
use orbyte::Deserialize;
use orbyte::Orbyte;
use orbyte::Serialize;

#[derive(Orbyte, Clone, PartialEq, Debug)]
pub struct ChatMessage {
    pub sender: String,

    pub content: Option<Content>,

    pub timestamp: Option<i32>,
}

#[derive(Orbyte, Clone, PartialEq, Debug)]
pub enum Content {
    Text(String),

    File(FileData),

    Signal(u8),
}

#[derive(Orbyte, Clone, PartialEq, Debug)]
pub enum Content3 {
    Text,

    File,

    Signal,
}

#[derive(Orbyte, Clone, PartialEq, Debug)]
pub struct FileData {
    pub data: Vec<u8>,

    pub name: String,
}

impl std::fmt::Display for Content {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Content::Text(text) => write!(f, "{}", text),
            Content::File(_) => write!(f, "[File content]"),
            Content::Signal(code) => write!(f, "Signal: code {}", code),
        }
    }
}

fn main() {
    let signal = ChatMessage {
        sender: "ali".to_string(),
        content: Some(Content::Signal(0)),
        timestamp: Some(100000000),
    };

    let empty = ChatMessage {
        sender: "ali".to_string(),
        content: None,
        timestamp: Some(100000000),
    }
        .serialize();

    let empty2 = ChatMessage {
        sender: "ali".to_string(),
        content: Some(Content::Signal(0)),
        timestamp: None,
    }
        .serialize();

    let empty3 = ChatMessage {
        sender: "ali".to_string(),
        content: None,
        timestamp: None,
    }
        .serialize();

    let bytes = signal.serialize();
    let signal_bytes = Content::Signal(0).serialize();
    println!("Bytes Size: {}", bytes.len());
    println!("Data Size: {}", empty.len());
    println!("Data2 Size: {}", empty2.len());
    println!("Data3 Size: {}", empty3.len());
    println!("Raw Text Size: {}", "ali".to_string().as_bytes().len());
    println!("Signal Size: {}", signal_bytes.len());
    let deserialized_person = ChatMessage::deserialize(&bytes).unwrap();

    println!("{:?}", deserialized_person);
}