Функция pipe
pub fn pipe() -> Result<(Sender, Receiver)>
net.Создает новый анонимный канал Unix.
Эта функция открывает новый канал и связывает оба его конца с циклом обработки событий по умолчанию.
Если вам нужно создать канал для обмена данными с запущенным процессом, вместо этого можно использовать Stdio::piped().
Ошибки
Если создать канал не удастся, эта функция вернет соответствующую ошибку ОС.
Примеры
Создание канала и передача его записывающего конца запущенному процессу.
use tokio::net::unix::pipe;
use tokio::process::Command;
let (tx, mut rx) = pipe::pipe()?;
let mut buffer = String::new();
let status = Command::new("echo")
.arg("Hello, world!")
.stdout(tx.into_blocking_fd()?)
.status();
rx.read_to_string(&mut buffer).await?;
assert!(status.await?.success());
assert_eq!(buffer, "Hello, world!\n");Паники
Эта функция вызывает панику, если ее вызвать не из среды выполнения с включенным вводом-выводом.
Среда выполнения обычно устанавливается неявно, если эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/unix/pipe/fn.pipe.html