1 个不稳定版本
0.1.1 | 2019年4月15日 |
---|---|
0.1.0 |
|
#13 in #cancel
129 每月下载量
49KB
963 代码行
cancellable-io
实现可取消同步网络I/O的crate。
此crate公开了与它们的std::net变体类似的struct TcpStream、TcpListener 和 UdpSocket,除了I/O操作可以通过与它们一起创建的 Canceller 对象取消。
大多数方法的工作方式与std::net实现中相同,有关详细信息和方法示例,请参阅 原始文档。
与原始std::net实现的主要区别
- 返回 TcpStream、TcpListener 或 UdpSocket 的方法也返回一个 Canceller 对象。
- 目前没有peek()方法
- TcpListener 和 UdpSocket 不是
Sync
(目前不是)
示例
use cancellable_io::*;
let (listener, canceller) = TcpListener::bind("127.0.0.1:0").unwrap();
let handle = std::thread::spawn(move || {
println!("Waiting for connections.");
let r = listener.accept();
assert!(is_cancelled(&r.unwrap_err()));
println!("Server cancelled.");
});
std::thread::sleep(std::time::Duration::from_secs(2));
canceller.cancel().unwrap();
handle.join().unwrap();
许可证:MIT/Apache-2.0
依赖关系
~0.6–1MB
~14K SLoC