use serde::{Serialize, Deserialize, de::DeserializeOwned}; #[derive(Serialize, Deserialize, PartialEq, Eq)] pub enum SocketMethod { /// Authentication and channel identification. Headers, /// A message was sent in the channel. Message, /// A message was deleted in the channel. Delete, } #[derive(Serialize, Deserialize)] pub struct SocketMessage { pub method: SocketMethod, pub data: String, } impl SocketMessage { pub fn data(&self) -> T { serde_json::from_str(&self.data).unwrap() } }