From 87f3b65649975463327222320dd9ad55efd918c2 Mon Sep 17 00:00:00 2001 From: Aaron Weiss Date: Sun, 26 Apr 2015 00:01:33 -0400 Subject: [PATCH] Replaced ToMessage with Into. --- src/client/conn.rs | 10 +++++----- src/client/data/command.rs | 6 +++--- src/client/data/message.rs | 18 +++--------------- src/client/data/mod.rs | 2 +- src/client/mod.rs | 2 +- src/client/server/mod.rs | 8 ++++---- 6 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/client/conn.rs b/src/client/conn.rs index 740aea1..5b14523 100644 --- a/src/client/conn.rs +++ b/src/client/conn.rs @@ -9,8 +9,8 @@ use std::net::TcpStream; use std::sync::{Mutex, MutexGuard}; #[cfg(feature = "encode")] use encoding::{DecoderTrap, EncoderTrap, Encoding}; #[cfg(feature = "encode")] use encoding::label::encoding_from_whatwg_label; +use client::data::Message; use client::data::kinds::{IrcRead, IrcWrite}; -use client::data::message::ToMessage; #[cfg(feature = "ssl")] use openssl::ssl::{SslContext, SslMethod, SslStream}; #[cfg(feature = "ssl")] use openssl::ssl::error::SslError; @@ -110,14 +110,14 @@ impl Connection { /// Sends a Message over this connection. #[cfg(feature = "encode")] - pub fn send(&self, to_msg: M, encoding: &str) -> Result<()> { + pub fn send>(&self, to_msg: M, encoding: &str) -> Result<()> { let encoding = match encoding_from_whatwg_label(encoding) { Some(enc) => enc, None => return Err(Error::new( ErrorKind::InvalidInput, &format!("Failed to find encoder. ({})", encoding)[..] )) }; - let msg = to_msg.to_message(); + let msg: Message = to_msg.into(); let data = match encoding.encode(&msg.into_string(), EncoderTrap::Replace) { Ok(data) => data, Err(data) => return Err(Error::new(ErrorKind::InvalidInput, @@ -131,9 +131,9 @@ impl Connection { /// Sends a message over this connection. #[cfg(not(feature = "encode"))] - pub fn send(&self, to_msg: M) -> Result<()> { + pub fn send>(&self, to_msg: M) -> Result<()> { let mut writer = self.writer.lock().unwrap(); - try!(writer.write_all(&to_msg.to_message().into_string().as_bytes())); + try!(writer.write_all(&to_msg.into::().into_string().as_bytes())); writer.flush() } diff --git a/src/client/data/command.rs b/src/client/data/command.rs index 888239a..eec6c01 100644 --- a/src/client/data/command.rs +++ b/src/client/data/command.rs @@ -2,7 +2,7 @@ use std::io::{Error, ErrorKind, Result}; use std::result::Result as StdResult; use std::str::FromStr; -use client::data::message::{Message, ToMessage}; +use client::data::Message; /// List of all client commands as defined in [RFC 2812](http://tools.ietf.org/html/rfc2812). This /// also includes commands from the @@ -149,9 +149,9 @@ pub enum Command { CAP(Option, CapSubCommand, Option, Option), } -impl ToMessage for Command { +impl Into for Command { /// Converts a Command into a Message. - fn to_message(self) -> Message { + fn into(self) -> Message { match self { Command::PASS(p) => Message::from_owned(None, string("PASS"), None, Some(p)), Command::NICK(n) => Message::from_owned(None, string("NICK"), None, Some(n)), diff --git a/src/client/data/message.rs b/src/client/data/message.rs index 0dc1722..012cafa 100644 --- a/src/client/data/message.rs +++ b/src/client/data/message.rs @@ -63,12 +63,6 @@ impl Message { } } -impl ToMessage for Message { - fn to_message(self) -> Message { - self - } -} - impl FromStr for Message { type Err = &'static str; fn from_str(s: &str) -> Result { @@ -101,15 +95,9 @@ impl FromStr for Message { } } -/// A trait representing the ability to be converted into a Message. -pub trait ToMessage { - /// Converts this to a Message. - fn to_message(self) -> Message; -} - -impl<'a> ToMessage for &'a str { - fn to_message(self) -> Message { - self.parse().unwrap() +impl<'a> From<&'a str> for Message { + fn from(s: &'a str) -> Message { + s.parse().unwrap() } } diff --git a/src/client/data/mod.rs b/src/client/data/mod.rs index b538b16..22bbe96 100644 --- a/src/client/data/mod.rs +++ b/src/client/data/mod.rs @@ -2,7 +2,7 @@ pub use client::data::command::Command; pub use client::data::config::Config; -pub use client::data::message::{Message, ToMessage}; +pub use client::data::message::Message; pub use client::data::response::Response; pub use client::data::user::{AccessLevel, User}; diff --git a/src/client/mod.rs b/src/client/mod.rs index 28e6f40..bc02e81 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -8,7 +8,7 @@ pub mod prelude { //! A client-side IRC prelude, re-exporting all the necessary basics. pub use client::server::{IrcServer, Server}; pub use client::server::utils::ServerExt; - pub use client::data::{Command, Config, Message, Response, ToMessage}; + pub use client::data::{Command, Config, Message, Response}; pub use client::data::kinds::{IrcRead, IrcWrite}; } diff --git a/src/client/server/mod.rs b/src/client/server/mod.rs index 0cf2847..edd400c 100644 --- a/src/client/server/mod.rs +++ b/src/client/server/mod.rs @@ -8,7 +8,7 @@ use std::io::{BufReader, BufWriter, Error, ErrorKind, Result}; use std::sync::{Mutex, RwLock}; use std::iter::Map; use client::conn::{Connection, NetStream}; -use client::data::{Command, Config, Message, Response, ToMessage, User}; +use client::data::{Command, Config, Message, Response, User}; use client::data::Command::{JOIN, NICK, NICKSERV, PONG, MODE}; use client::data::kinds::{IrcRead, IrcWrite}; #[cfg(feature = "ctcp")] use time::now; @@ -20,7 +20,7 @@ pub trait Server<'a, T, U> { /// Gets the configuration being used with this Server. fn config(&self) -> &Config; /// Sends a Command to this Server. - fn send(&self, message: M) -> Result<()>; + fn send>(&self, message: M) -> Result<()>; /// Gets an Iterator over Messages received by this Server. fn iter(&'a self) -> ServerIterator<'a, T, U>; /// Gets an Iterator over Commands received by this Server. @@ -76,12 +76,12 @@ impl<'a, T: IrcRead, U: IrcWrite> Server<'a, T, U> for IrcServer { } #[cfg(feature = "encode")] - fn send(&self, msg: M) -> Result<()> { + fn send>(&self, msg: M) -> Result<()> { self.conn.send(msg, self.config.encoding()) } #[cfg(not(feature = "encode"))] - fn send(&self, msg: M) -> Result<()> { + fn send>(&self, msg: M) -> Result<()> { self.conn.send(msg) }