Spec-Zone.ru › Tokio

Функция stdout

pub fn stdout() -> Stdout
Доступно только при включённой функции crate io-std.

Создаёт новый дескриптор стандартного вывода текущего процесса.

Возвращённый дескриптор позволяет записывать данные в стандартный вывод из среды выполнения Tokio.

При параллельной записи в stdout необходимо соблюдать осторожность: гарантируется целостность только отдельных операций записи в этот AsyncWrite. В частности, следует учитывать, что операции записи с использованием write_all не гарантированно выполняются как одна операция записи, поэтому запись данных несколькими потоками с помощью write_all может привести к перемежению вывода.

Обратите внимание, что, в отличие от std::io::stdout, каждый вызов этого stdout() создаёт новый объект записи, поэтому, например, эта программа не сбрасывает stdout:

tokio::io::stdout().write_all(b"aa").await?;
tokio::io::stdout().flush().await?;

Примеры

use tokio::io::{self, AsyncWriteExt};

#[tokio::main]
async fn main() -> io::Result<()> {
    let mut stdout = io::stdout();
    stdout.write_all(b"Hello world!").await?;
    Ok(())
}

Ниже приведён пример использования stdio в цикле.

use tokio::io::{self, AsyncWriteExt};

#[tokio::main]
async fn main() {
    let messages = vec!["hello", " world\n"];

    // When you use `stdio` in a loop, it is recommended to create
    // a single `stdio` instance outside the loop and call a write
    // operation against that instance on each loop.
    //
    // Repeatedly creating `stdout` instances inside the loop and
    // writing to that handle could result in mangled output since
    // each write operation is handled by a different blocking thread.
    let mut stdout = io::stdout();

    for message in &messages {
        stdout.write_all(message.as_bytes()).await.unwrap();
        stdout.flush().await.unwrap();
    }
}

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/fn.stdout.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API