use {Message, Channel, User}; use std::sync::Arc; pub enum Event { Message { message: Message }, // A user sends a message SelfJoin { channel: Channel }, // We join a channel SelfQuit { channel: Channel }, // We quit a channel UserJoin { channel: Channel, user: User }, // A user joins a channel UserQuit { channel: Channel, user: User } // A user quits a channel } pub struct Envelope { pub from: Option, pub event: Arc, pub to: Vec } impl Envelope { pub fn new (event: Event) -> Envelope { Envelope { from: None, event: Arc::new(event), to: vec![] } } }