use std::net::SocketAddr; #[derive(Debug, Clone)] pub struct User { pub nickname: String, pub username: String, pub hostname: String, pub realname: String, pub address: SocketAddr, nick_set: bool, user_set: bool, } impl User { pub fn new(addr: SocketAddr) -> User { User { nickname: String::new(), username: String::new(), hostname: String::new(), realname: String::new(), address: addr, nick_set: false, user_set: false, } } pub fn set_nick(&mut self, nick: &str) { self.nickname = nick.to_string(); self.nick_set = true; } pub fn set_user(&mut self, user: &str, host: &str, real: &str) { self.username = user.to_string(); self.hostname = host.to_string(); self.realname = real.to_string(); self.user_set = true; } pub fn to_string(&self) -> String { format!("{}!{}@{}", self.nickname, self.username, self.hostname) } pub fn is_registered(&self) -> bool { self.nick_set && self.user_set } }