pub struct Stdout { /* private fields */ }Expand description
A handle to the global standard output stream of the current process.
Each handle shares a global buffer of data to be written to the standard
output stream. Access is also synchronized via a lock and explicit control
over locking is available via the lock method.
By default, the handle is line-buffered when connected to a terminal, meaning
it flushes automatically when a newline (\n) is encountered. For immediate
output, you can manually call the flush method. When the handle goes out
of scope, the buffer is automatically flushed.
Created by the io::stdout method.
§Note: Windows Portability Considerations
When operating in a console, the Windows implementation of this stream does not support non-UTF-8 byte sequences. Attempting to write bytes that are not valid UTF-8 will return an error.
In a process with a detached console, such as one using
#![windows_subsystem = "windows"], or in a child process spawned from such a process,
the contained handle will be null. In such cases, the standard library’s Read and
Write will do nothing and silently succeed. All other I/O operations, via the
standard library or via raw Windows API calls, will fail.
Implementations§
Source§impl Stdout
impl Stdout
1.0.0 · Sourcepub fn lock(&self) -> StdoutLock<'static> ⓘ
pub fn lock(&self) -> StdoutLock<'static> ⓘ
Locks this handle to the standard output stream, returning a writable guard.
The lock is released when the returned lock goes out of scope. The
returned guard also implements the Write trait for writing data.
§Examples
use std::io::{self, Write};
fn main() -> io::Result<()> {
let mut stdout = io::stdout().lock();
stdout.write_all(b"hello world")?;
Ok(())
}Trait Implementations§
1.63.0 · Source§impl AsFd for Stdout
impl AsFd for Stdout
Source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
§impl AsLockedWrite for Stdout
impl AsLockedWrite for Stdout
§type Write<'w> = StdoutLock<'w>
type Write<'w> = StdoutLock<'w>
§fn as_locked_write(&mut self) -> <Stdout as AsLockedWrite>::Write<'_> ⓘ
fn as_locked_write(&mut self) -> <Stdout as AsLockedWrite>::Write<'_> ⓘ
1.70.0 · Source§impl IsTerminal for Stdout
impl IsTerminal for Stdout
Source§fn is_terminal(&self) -> bool
fn is_terminal(&self) -> bool
true if the descriptor/handle refers to a terminal/tty. Read more§impl IsTerminal for Stdout
impl IsTerminal for Stdout
§fn is_terminal(&self) -> bool
fn is_terminal(&self) -> bool
true if the descriptor/handle refers to a terminal/tty.§impl IsTerminal for Stdout
impl IsTerminal for Stdout
§fn is_terminal(&self) -> bool
fn is_terminal(&self) -> bool
true if the descriptor/handle refers to a terminal/tty. Read moreSource§impl StdioExt for Stdout
impl StdioExt for Stdout
Source§fn set_fd<T>(&mut self, fd: T) -> Result<(), Error>
fn set_fd<T>(&mut self, fd: T) -> Result<(), Error>
stdio_swap)fd. Read more1.48.0 · Source§impl Write for &Stdout
impl Write for &Stdout
Source§fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector)Source§fn flush(&mut self) -> Result<(), Error>
fn flush(&mut self) -> Result<(), Error>
Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored)§impl Write for &Stdout
impl Write for &Stdout
1.0.0 · Source§impl Write for Stdout
impl Write for Stdout
Source§fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
fn write(&mut self, buf: &[u8]) -> Result<usize, Error>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector)Source§fn flush(&mut self) -> Result<(), Error>
fn flush(&mut self) -> Result<(), Error>
Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored)§impl Write for Stdout
impl Write for Stdout
impl RawStream for Stdout
impl RefUnwindSafe for Stdout
impl UnwindSafe for Stdout
Auto Trait Implementations§
impl Freeze for Stdout
impl Send for Stdout
impl Sync for Stdout
impl Unpin for Stdout
impl UnsafeUnpin for Stdout
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request