pub fn stdout() -> Stdout
Expand description
Constructs a new handle to the standard output of the current process.
The returned handle allows writing to standard out from the within the Tokio runtime.
Concurrent writes to stdout must be executed with care: Only individual
writes to this AsyncWrite
are guaranteed to be intact. In particular
you should be aware that writes using write_all
are not guaranteed
to occur as a single write, so multiple threads writing data with
write_all
may result in interleaved output.
ยงExamples
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(())
}
The following is an example of using stdio
with loop.
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();
}
}