Struct io_streams::StreamWriter
source · pub struct StreamWriter { /* private fields */ }
Expand description
An unbuffered and unlocked output byte stream, implementing Write
,
abstracted over the destination of the output.
It primarily consists of a single file handle, and also contains any resources needed to safely hold the file handle live.
Since it is unbuffered, and since many destinations have high per-call
overhead, it is often beneficial to wrap this in a BufWriter
or
LineWriter
.
Implementations§
source§impl StreamWriter
impl StreamWriter
sourcepub fn stdout() -> Result<Self>
pub fn stdout() -> Result<Self>
Write to standard output.
Unlike std::io::stdout
, this stdout
returns a stream which is
unbuffered and unlocked.
Since it is unbuffered, it is often beneficial to wrap the resulting
StreamWriter
in a BufWriter
or LineWriter
.
This acquires a std::io::StdoutLock
(in a non-recursive way) to
prevent accesses to std::io::Stdout
while this is live, and fails if
a StreamWriter
or StreamDuplexer
for standard output already
exists.
sourcepub fn stderr() -> Result<Self>
pub fn stderr() -> Result<Self>
Write to standard error.
Like std::io::stderr
, this stderr
returns a stream which is
unbuffered. However, unlike std::io::stderr
, the stream is also
unlocked.
Since it is unbuffered, it is often beneficial to wrap the resulting
StreamWriter
in a BufWriter
or LineWriter
.
This acquires a std::io::StderrLock
(in a non-recursive way) to
prevent accesses to std::io::Stderr
while this is live, and fails if
a StreamWriter
or StreamDuplexer
for standard output already
exists.
sourcepub fn file<Filelike: IntoFilelike + Read + Write + Seek>(
filelike: Filelike,
) -> Self
pub fn file<Filelike: IntoFilelike + Read + Write + Seek>( filelike: Filelike, ) -> Self
Write to an open file, taking ownership of it.
This method can be passed a std::fs::File
or similar File
types.
sourcepub fn tcp_stream<Socketlike: IntoSocketlike>(socketlike: Socketlike) -> Self
pub fn tcp_stream<Socketlike: IntoSocketlike>(socketlike: Socketlike) -> Self
Write to an open TCP stream, taking ownership of it.
This method can be passed a std::net::TcpStream
or similar
TcpStream
types.
sourcepub fn unix_stream(unix_stream: UnixStream) -> Self
pub fn unix_stream(unix_stream: UnixStream) -> Self
Write to an open Unix-domain stream, taking ownership of it.
sourcepub fn pipe_writer(pipe_writer: PipeWriter) -> Self
pub fn pipe_writer(pipe_writer: PipeWriter) -> Self
Write to the writing end of an open pipe, taking ownership of it.
sourcepub fn write_to_command(command: Command) -> Result<Self>
pub fn write_to_command(command: Command) -> Result<Self>
Spawn the given command and write to its standard input. Its standard
output is redirected to Stdio::null()
.
sourcepub fn child_stdin(child_stdin: ChildStdin) -> Self
pub fn child_stdin(child_stdin: ChildStdin) -> Self
Write to the given child standard input, taking ownership of it.
sourcepub fn piped_thread(boxed_write: Box<dyn Write + Send>) -> Result<Self>
pub fn piped_thread(boxed_write: Box<dyn Write + Send>) -> Result<Self>
Write to a boxed Write
implementation, taking ownership of it. This
works by creating a new thread to read the data through a pipe and
write it.
Writes to the pipe aren’t synchronous with writes to the boxed Write
implementation. To ensure data is flushed all the way through the
thread and into the boxed Write
implementation, call flush
()
,
which synchronizes with the thread to ensure that is has completed
writing all pending output.
Trait Implementations§
source§impl AsFd for StreamWriter
impl AsFd for StreamWriter
source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
source§impl AsRawFd for StreamWriter
impl AsRawFd for StreamWriter
source§impl Debug for StreamWriter
impl Debug for StreamWriter
source§impl Write for StreamWriter
impl Write for StreamWriter
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)source§fn write_all(&mut self, buf: &[u8]) -> Result<()>
fn write_all(&mut self, buf: &[u8]) -> Result<()>
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>
write_all_vectored
)Auto Trait Implementations§
impl Freeze for StreamWriter
impl !RefUnwindSafe for StreamWriter
impl Send for StreamWriter
impl Sync for StreamWriter
impl Unpin for StreamWriter
impl !UnwindSafe for StreamWriter
Blanket Implementations§
source§impl<T> AsFilelike for Twhere
T: AsFd,
impl<T> AsFilelike for Twhere
T: AsFd,
source§fn as_filelike(&self) -> BorrowedFd<'_>
fn as_filelike(&self) -> BorrowedFd<'_>
source§fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>where
Target: FilelikeViewType,
fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>where
Target: FilelikeViewType,
&Target
. Read moresource§impl<T> AsGrip for Twhere
T: AsFd,
impl<T> AsGrip for Twhere
T: AsFd,
source§fn as_grip(&self) -> BorrowedFd<'_>
fn as_grip(&self) -> BorrowedFd<'_>
source§impl<T> AsRawFilelike for Twhere
T: AsRawFd,
impl<T> AsRawFilelike for Twhere
T: AsRawFd,
source§fn as_raw_filelike(&self) -> i32
fn as_raw_filelike(&self) -> i32
source§impl<T> AsRawGrip for Twhere
T: AsRawFd,
impl<T> AsRawGrip for Twhere
T: AsRawFd,
source§fn as_raw_grip(&self) -> i32
fn as_raw_grip(&self) -> i32
source§impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
source§fn as_raw_socketlike(&self) -> i32
fn as_raw_socketlike(&self) -> i32
source§impl<T> AsSocketlike for Twhere
T: AsFd,
impl<T> AsSocketlike for Twhere
T: AsFd,
source§fn as_socketlike(&self) -> BorrowedFd<'_>
fn as_socketlike(&self) -> BorrowedFd<'_>
source§fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>where
Target: SocketlikeViewType,
fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>where
Target: SocketlikeViewType,
&Target
. Read moresource§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
source§impl<T> FileIoExt for Twhere
T: AsFilelike + IoExt,
impl<T> FileIoExt for Twhere
T: AsFilelike + IoExt,
source§fn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<(), Error>
fn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<(), Error>
source§fn allocate(&self, offset: u64, len: u64) -> Result<(), Error>
fn allocate(&self, offset: u64, len: u64) -> Result<(), Error>
source§fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize, Error>
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize, Error>
source§fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<(), Error>
fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<(), Error>
source§fn read_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64,
) -> Result<usize, Error>
fn read_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64, ) -> Result<usize, Error>
read_vectored
what read_at
is to read
.source§fn is_read_vectored_at(&self) -> bool
fn is_read_vectored_at(&self) -> bool
FileIoExt
implementation has an efficient
read_vectored_at
implementation.source§fn read_to_end_at(&self, buf: &mut Vec<u8>, offset: u64) -> Result<usize, Error>
fn read_to_end_at(&self, buf: &mut Vec<u8>, offset: u64) -> Result<usize, Error>
offset
, until EOF in this source, placing
them into buf
.source§fn read_to_string_at(
&self,
buf: &mut String,
offset: u64,
) -> Result<usize, Error>
fn read_to_string_at( &self, buf: &mut String, offset: u64, ) -> Result<usize, Error>
offset
, until EOF in this source,
appending them to buf
.source§fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize, Error>
fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize, Error>
source§fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<(), Error>
fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<(), Error>
source§fn write_vectored_at(
&self,
bufs: &[IoSlice<'_>],
offset: u64,
) -> Result<usize, Error>
fn write_vectored_at( &self, bufs: &[IoSlice<'_>], offset: u64, ) -> Result<usize, Error>
write_vectored
what write_at
is to write
.source§fn is_write_vectored_at(&self) -> bool
fn is_write_vectored_at(&self) -> bool
FileIoExt
implementation has an efficient
write_vectored_at
implementation.source§fn append(&self, buf: &[u8]) -> Result<usize, Error>
fn append(&self, buf: &[u8]) -> Result<usize, Error>
source§fn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>
fn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>
append
what write_vectored
is to write
.source§fn is_append_vectored(&self) -> bool
fn is_append_vectored(&self) -> bool
FileIoExt
implementation has an efficient
append_vectored
implementation.source§fn seek(&self, pos: SeekFrom) -> Result<u64, Error>
fn seek(&self, pos: SeekFrom) -> Result<u64, Error>
source§fn stream_position(&self) -> Result<u64, Error>
fn stream_position(&self) -> Result<u64, Error>
source§fn read_exact_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64,
) -> Result<(), Error>
fn read_exact_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64, ) -> Result<(), Error>
read_exact_vectored
what read_exact_at
is to read_exact
.source§fn write_all_vectored_at(
&self,
bufs: &mut [IoSlice<'_>],
offset: u64,
) -> Result<(), Error>
fn write_all_vectored_at( &self, bufs: &mut [IoSlice<'_>], offset: u64, ) -> Result<(), Error>
write_all_vectored
what write_all_at
is to write_all
.source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self
file descriptor.source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
self
file descriptor. Read moresource§impl<T> IoExt for Twhere
T: AsFilelike + AsSocketlike,
impl<T> IoExt for Twhere
T: AsFilelike + AsSocketlike,
source§fn read(&self, buf: &mut [u8]) -> Result<usize, Error>
fn read(&self, buf: &mut [u8]) -> Result<usize, Error>
source§fn read_exact(&self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moresource§fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moresource§fn read_to_end(&self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf
. Read moresource§fn read_to_string(&self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&self, buf: &mut String) -> Result<usize, Error>
buf
. Read moresource§fn peek(&self, buf: &mut [u8]) -> Result<usize, Error>
fn peek(&self, buf: &mut [u8]) -> Result<usize, Error>
source§fn write(&self, buf: &[u8]) -> Result<usize, Error>
fn write(&self, buf: &[u8]) -> Result<usize, Error>
source§fn write_all(&self, buf: &[u8]) -> Result<(), Error>
fn write_all(&self, buf: &[u8]) -> Result<(), Error>
source§fn write_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>
fn write_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>
write
, except that it writes from a slice of buffers. Read moresource§fn flush(&self) -> Result<(), Error>
fn flush(&self) -> Result<(), Error>
source§fn write_fmt(&self, fmt: Arguments<'_>) -> Result<(), Error>
fn write_fmt(&self, fmt: Arguments<'_>) -> Result<(), Error>
source§fn read_exact_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<(), Error>
fn read_exact_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<(), Error>
read_vectored
what read_exact
is to read
.