【发布时间】:2016-02-18 16:22:28
【问题描述】:
我是一名正在努力解决异步 IO 问题的 Rust 初学者。我决定使用mio。
我已经阅读了一些源代码 + 教程,但仍有一些我不明白的基本部分。我正在使用netcat -k -l 127.0.0.1 9999 设置服务器。然后我用cargo(下面的代码)运行简单的测试。我期待看到“准备好”或“滴答”的恐慌。但它永远不会发生,测试会永远运行。
extern crate mio;
use mio::*;
#[allow(unused_imports)]
use mio::tcp::TcpStream;
#[allow(dead_code)]
struct MyHandler;
impl Handler for MyHandler {
type Timeout = ();
type Message = ();
fn ready(&mut self, _event_loop: &mut EventLoop<Self>, _token: Token, _event_set: EventSet) {
panic!("ready");
}
fn tick(&mut self, _event_loop: &mut EventLoop<Self>) {
panic!("tick");
}
}
#[test]
fn mio_test1() {
let addr = "127.0.0.1:9999".parse().unwrap();
let mut event_loop = EventLoop::<MyHandler>::new().unwrap();
event_loop.register(&TcpStream::connect(&addr).unwrap(), Token(0), EventSet::readable(), PollOpt::level()).unwrap();
event_loop.run(&mut MyHandler).unwrap();
}
【问题讨论】:
-
在这种情况下使用
#[allow(...)]是多余的。最好直接prepend the unused variables with an underscore。相关question. -
感谢@Shepmaster 的帮助。我已经看到您使用重新注册进行的编辑,并且我已经将其修复为注册,它导致了操作系统错误。现在我又带着原来的问题回来了。我换了println!带着恐慌!确保不执行处理程序。