summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-06 18:39:51 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-06 18:39:51 -0400
commitd64db47867cdd54cdc005333203436fce193c4fc (patch)
tree4522a4dacd5e1a23037c1283589f1e9a98233f62
parent2d401b7685e6f142c5945075ba2d79abfa781f49 (diff)
downloadrust-irc-d64db47867cdd54cdc005333203436fce193c4fc.tar.gz
rust-irc-d64db47867cdd54cdc005333203436fce193c4fc.zip
pass in the client to callbacks
this requires run_loop_with to consume the client, since we need to be able to pass it in mutably. i think that is probably okay.
-rw-r--r--examples/client.rs5
-rw-r--r--src/client.rs5
2 files changed, 6 insertions, 4 deletions
diff --git a/examples/client.rs b/examples/client.rs
index f1f2479..ef0f7d2 100644
--- a/examples/client.rs
+++ b/examples/client.rs
@@ -1,8 +1,9 @@
extern crate irc;
fn main () {
- let mut client = irc::ClientBuilder::new("doytest", "chat.freenode.net").connect();
- client.run_loop_with(|m| {
+ let builder = irc::ClientBuilder::new("doytest", "chat.freenode.net");
+ let client = builder.connect();
+ client.run_loop_with(|_client, m| {
println!("{}", m);
});
}
diff --git a/src/client.rs b/src/client.rs
index 3beda7d..1623b02 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -140,9 +140,10 @@ impl Client {
// storing closures very well yet if they need to receive a borrowed
// pointer, and we would need to pass the client object into the callback
// in order to make this work
- pub fn run_loop_with (&mut self, handler: |Message|) {
+ pub fn run_loop_with (mut self, handler: |&mut Client, Message|) {
loop {
- handler(self.read());
+ let m = self.read();
+ handler(&mut self, m);
}
}
}