use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ClientMeta { pub display_name: String, pub avatar: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ServerMeta { pub name: String, pub description: String, pub channels: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "kind")] #[serde(rename_all = "camelCase")] pub enum ChannelKind { Text, Category { channels: Vec }, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Channel { pub id: String, pub name: String, #[serde(flatten)] pub data: ChannelKind, }