4 个版本
0.1.3 | 2022 年 11 月 11 日 |
---|---|
0.1.2 | 2022 年 11 月 11 日 |
0.1.1 | 2022 年 11 月 11 日 |
0.1.0 | 2022 年 11 月 11 日 |
#2189 in 异步
每月 23 次下载
6KB
65 行
mio_channel
提供标准通道的包装,可以使用 Mio 进行轮询。
示例
const CHANNEL: mio::Token = mio::Token(0);
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut poll = mio::Poll::new()?;
let mut events = mio::Events::with_capacity(2);
let (tx, mut rx) = mio_channel::channel();
poll.registry().register(&mut rx, CHANNEL, mio::Interest::READABLE)?;
let handler = std::thread::spawn(move || {
std::thread::sleep(std::time::Duration::from_millis(1000));
let _ = tx.send("Hello world!");
});
poll.poll(&mut events, None)?;
assert_eq!(rx.try_recv()?, "Hello world!");
let _ = handler.join();
Ok(())
}
lib.rs
:
mio_channel
提供标准通道的包装,可以使用 Mio 进行轮询。
示例
#[cfg(test)]
mod tests {
const CHANNEL: mio::Token = mio::Token(0);
#[test]
fn test_channel() -> Result<(), Box<dyn std::error::Error>> {
let mut poll = mio::Poll::new()?;
let mut events = mio::Events::with_capacity(2);
let (tx, mut rx) = mio_channel::channel();
poll.registry().register(&mut rx, CHANNEL, mio::Interest::READABLE)?;
let handler = std::thread::spawn(move || {
std::thread::sleep(std::time::Duration::from_millis(1000));
let _ = tx.send("Hello world!");
});
poll.poll(&mut events, None)?;
assert_eq!(rx.try_recv()?, "Hello world!");
let _ = handler.join();
Ok(())
}
}
依赖
~0.4–11MB
~66K SLoC