cuttle/src/lib.rs
2023-08-02 16:42:31 -07:00

39 lines
992 B
Rust

use std::fmt::Debug;
use rkyv::{Archive, Deserialize, Serialize};
#[derive(Archive, Deserialize, Serialize, PartialEq, Eq, Clone)]
pub enum MessageData {
Text(String),
Data(Vec<u8>),
}
impl Debug for MessageData {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Text(msg_txt) => f.debug_tuple("Text").field(msg_txt).finish(),
Self::Data(data) => f
.debug_tuple("Data")
.field(&format!("{} bytes", data.len()))
.finish(),
}
}
}
#[derive(Archive, Deserialize, Serialize, Debug, PartialEq, Eq, Clone)]
pub struct Message {
pub description: String,
pub data: MessageData,
}
impl Message {
pub fn new(data: MessageData, desc: Option<&str>) -> Self {
let description = if let Some(desc) = desc {
desc.to_owned()
} else {
"none".to_owned()
};
Message { description, data }
}
}