Spec-Zone.ru › Tokio

Struct Stdout

pub struct Stdout { /* private fields */ }
Available on crate feature io-std only.

A handle to the standard output stream of a process.

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.

Warning

Each call to stdout() creates a new handle with its own internal state. Writes through different handles are not coordinated, so creating a new handle in a loop can cause output to appear out of order:

// WRONG: creates a new handle each iteration
for i in 0..10 {
    let mut out = io::stdout();
    out.write_all(b"data").await?;
    out.write_all(b"\n").await?;
    // out is dropped here; its last write may still be
    // running when the next iteration starts
}

To preserve order, create one handle outside the loop and reuse it:

let mut out = io::stdout();
for i in 0..10 {
    out.write_all(b"data").await?;
    out.write_all(b"\n").await?;
}

Created by the stdout function.

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();
    }
}

Trait Implementations

impl AsFd for Stdout

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more

impl AsHandle for Stdout

Available on Windows only.

fn as_handle(&self) -> BorrowedHandle<'_>

Available on docsrs and Unix and (crate features fs or net) only.
See std::os::windows::io::AsHandle::as_handle

impl AsRawFd for Stdout

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more

impl AsRawHandle for Stdout

Available on Windows only.

fn as_raw_handle(&self) -> RawHandle

Available on docsrs and Unix and (crate features fs or net) only.
See std::os::windows::io::AsRawHandle::as_raw_handle

impl AsyncWrite for Stdout

fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>

Attempt to write bytes from buf into the object. Read more

fn poll_flush( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>

Attempts to flush the object, ensuring that any buffered data reach their destination. Read more

fn poll_shutdown( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Error>>

Initiates or attempts to shut down this writer, returning success when the I/O connection has completely shut down. Read more

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>

Like poll_write, except that it writes from a slice of buffers. Read more

fn is_write_vectored(&self) -> bool

Determines if this writer has an efficient poll_write_vectored implementation. Read more

impl Debug for Stdout

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl Freeze for Stdout

impl RefUnwindSafe for Stdout

impl Send for Stdout

impl Sync for Stdout

impl Unpin for Stdout

impl UnsafeUnpin for Stdout

impl UnwindSafe for Stdout

Blanket Implementations

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more

impl<W> AsyncWriteExt for W
where W: AsyncWrite + ?Sized,

fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a buffer into this writer, returning how many bytes were written. Read more

fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>
where Self: Unpin,

Available on crate feature io-util only.
Like write, except that it writes from a slice of buffers. Read more

fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Available on crate feature io-util only.
Writes a buffer into this writer, advancing the buffer’s internal cursor. Read more

fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Available on crate feature io-util only.
Attempts to write an entire buffer into this writer. Read more

fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>
where Self: Unpin,

Available on crate feature io-util only.
Attempts to write an entire buffer into this writer. Read more

fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 8-bit integer to the underlying writer. Read more

fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a signed 8-bit integer to the underlying writer. Read more

fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 16-bit integer in big-endian order to the underlying writer. Read more

fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a signed 16-bit integer in big-endian order to the underlying writer. Read more

fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 32-bit integer in big-endian order to the underlying writer. Read more

fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a signed 32-bit integer in big-endian order to the underlying writer. Read more

fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 64-bit integer in big-endian order to the underlying writer. Read more

fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an signed 64-bit integer in big-endian order to the underlying writer. Read more

fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 128-bit integer in big-endian order to the underlying writer. Read more

fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an signed 128-bit integer in big-endian order to the underlying writer. Read more

fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an 32-bit floating point type in big-endian order to the underlying writer. Read more

fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an 64-bit floating point type in big-endian order to the underlying writer. Read more

fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 16-bit integer in little-endian order to the underlying writer. Read more

fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a signed 16-bit integer in little-endian order to the underlying writer. Read more

fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 32-bit integer in little-endian order to the underlying writer. Read more

fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes a signed 32-bit integer in little-endian order to the underlying writer. Read more

fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 64-bit integer in little-endian order to the underlying writer. Read more

fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an signed 64-bit integer in little-endian order to the underlying writer. Read more

fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an unsigned 128-bit integer in little-endian order to the underlying writer. Read more

fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an signed 128-bit integer in little-endian order to the underlying writer. Read more

fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an 32-bit floating point type in little-endian order to the underlying writer. Read more

fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>
where Self: Unpin,

Available on crate feature io-util only.
Writes an 64-bit floating point type in little-endian order to the underlying writer. Read more

fn flush(&mut self) -> Flush<'_, Self>
where Self: Unpin,

Available on crate feature io-util only.
Flushes this output stream, ensuring that all intermediately buffered contents reach their destination. Read more

fn shutdown(&mut self) -> Shutdown<'_, Self>
where Self: Unpin,

Available on crate feature io-util only.
Shuts down the output stream, ensuring that the value can be dropped cleanly. Read more

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

impl<T> From<T> for T

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

The type returned in the event of a conversion error.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

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

Spec-Zone.ru

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