From 42b4dcbf03ccbf92dfa9575ed95b4ece4eb66af3 Mon Sep 17 00:00:00 2001 From: Aaron Weiss Date: Mon, 3 Nov 2014 02:02:29 -0500 Subject: [PATCH] Added identify(...) utility, and clarified intent in some places using match. --- src/data/message.rs | 11 ++++++----- src/server/mod.rs | 6 ++++-- src/server/utils.rs | 11 +++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/data/message.rs b/src/data/message.rs index dac1b8a..ce1680c 100644 --- a/src/data/message.rs +++ b/src/data/message.rs @@ -70,11 +70,12 @@ impl FromStr for Message { } else { None }; - let command = if let Some(cmd) = state.find(' ').map(|i| s[..i]) { - state = state.find(' ').map_or("", |i| s[i..]); - cmd - } else { - return None + let command = match state.find(' ').map(|i| s[..i]) { + Some(cmd) => { + state = state.find(' ').map_or("", |i| s[i..]); + cmd + } + _ => return None }; let args: Vec<_> = state.splitn(14, ' ').collect(); Some(Message::new(prefix, command, if args.len() > 0 { Some(args) } else { None }, suffix)) diff --git a/src/server/mod.rs b/src/server/mod.rs index 3ed1321..38456ba 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -86,7 +86,9 @@ impl<'a, T, U> ServerIterator<'a, T, U> where T: IrcWriter, U: IrcReader { impl<'a, T, U> Iterator for ServerIterator<'a, T, U> where T: IrcWriter, U: IrcReader { fn next(&mut self) -> Option { let line = self.server.conn.recv(); - if let Err(_) = line { return None } - from_str(line.unwrap()[]) + match line { + Err(_) => None, + Ok(msg) => from_str(msg[]) + } } } diff --git a/src/server/utils.rs b/src/server/utils.rs index 07cdcfd..8ced1c6 100644 --- a/src/server/utils.rs +++ b/src/server/utils.rs @@ -1,2 +1,13 @@ //! Utilities and shortcuts for working with IRC servers #![experimental] + +use std::io::IoResult; +use data::command::{NICK, USER}; +use data::kinds::{IrcReader, IrcWriter}; +use server::Server; + +/// Sends a NICK and USER to identify +pub fn identify<'a, T, U>(server: &Server<'a, T, U>) -> IoResult<()> where T: IrcWriter, U: IrcReader { + try!(server.send(NICK(server.config().nickname[]))); + server.send(USER(server.config().username[], "0", server.config().realname[])) +}