2 个版本
0.1.1 | 2021 年 6 月 27 日 |
---|---|
0.1.0 | 2021 年 6 月 25 日 |
#1190 in 异步
在 2 crates 中使用
17KB
380 代码行
tokio-anon-pipe
Windows 的异步匿名管道。
请注意,我们在这里特别不使用
CreatePipe
,因为不幸的是,返回的匿名管道不支持重叠操作。相反,我们创建一个“希望是唯一的”名称,创建一个启用了重叠操作的命名管道。
支持的平台
x86_64-pc-windows-msvc
仅支持
示例
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
let (mut r, mut w) = tokio_anon_pipe::anon_pipe().await?;
w.write_all(b"HELLO, WORLD!").await?;
let mut buf = [0; 16];
let len = r.read(&mut buf[..]).await?;
assert_eq!(&buf[..len], &b"HELLO, WORLD!"[..]);
Ok(())
}
许可证:MIT/Apache-2.0
lib.rs
:
Windows 的异步匿名管道。
请注意,我们在这里特别不使用
CreatePipe
,因为不幸的是,返回的匿名管道不支持重叠操作。相反,我们创建一个“希望是唯一的”名称,创建一个启用了重叠操作的命名管道。
支持的平台
x86_64-pc-windows-msvc
仅支持
示例
use tokio::io::{AsyncReadExt, AsyncWriteExt};
#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()> {
let (mut r, mut w) = tokio_anon_pipe::anon_pipe().await?;
w.write_all(b"HELLO, WORLD!").await?;
let mut buf = [0; 16];
let len = r.read(&mut buf[..]).await?;
assert_eq!(&buf[..len], &b"HELLO, WORLD!"[..]);
Ok(())
}
非 Windows 的存根。开发原因。
依赖项
~3–14MB
~112K SLoC