aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Dremann <dremann@gmail.com>2014-06-12 14:58:00 -0400
committerZachary Dremann <dremann@gmail.com>2014-06-12 14:58:00 -0400
commit76f65af3a8b3956d019cac5de6d32a724f760c0f (patch)
tree47ab9c4ecdbab00944263b83a7a9ebca73f34799
parent0dc97968422a078126dd9bf575002b335962b42c (diff)
downloadrusty-irc-76f65af3a8b3956d019cac5de6d32a724f760c0f.tar.gz
rusty-irc-76f65af3a8b3956d019cac5de6d32a724f760c0f.zip
Usernames, etc don't need to be options.
-rw-r--r--src/lib.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 27c8c9f..2574b3e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29,19 +29,19 @@ pub mod state {
}
pub struct IrcClient<State> {
- nick: Option<String>,
- username: Option<String>,
- real_name: Option<String>,
+ nick: String,
+ username: String,
+ real_name: String,
state: State,
}
impl IrcClient <state::Disconnected> {
pub fn new(nick: String, username: String, real_name: String) -> IrcClient<state::Disconnected> {
- IrcClient { nick: Some(nick), username: Some(username), real_name: Some(real_name), state: state::Disconnected }
+ IrcClient { nick: nick, username: username, real_name: real_name, state: state::Disconnected }
}
#[allow(experimental)]
- pub fn connect(mut self, host: &str, port: u16, message_sender: Sender<Message>) -> Result<IrcClient<state::Connected>, (IoError, IrcClient<state::Disconnected>)> {
+ pub fn connect(self, host: &str, port: u16, message_sender: Sender<Message>) -> Result<IrcClient<state::Connected>, (IoError, IrcClient<state::Disconnected>)> {
let stream = match TcpStream::connect(host, port) {
Ok(stream) => stream,
Err(e) => return Err((e, self))
@@ -49,10 +49,12 @@ impl IrcClient <state::Disconnected> {
let (send_writer, rec_writer) = channel();
+ let IrcClient { nick:nick, username: username, real_name: real_name, .. } = self;
+
let connection = IrcClient{
- nick: self.nick.take(),
- username: self.username.take(),
- real_name: self.real_name.take(),
+ nick: nick,
+ username: username,
+ real_name: real_name,
state: state::Connected {
stream: stream.clone(),
output: send_writer.clone(),