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

source

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.

source

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.

source

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.

source

pub fn unix_stream(unix_stream: UnixStream) -> Self

Write to an open Unix-domain stream, taking ownership of it.

source

pub fn pipe_writer(pipe_writer: PipeWriter) -> Self

Write to the writing end of an open pipe, taking ownership of it.

source

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().

source

pub fn child_stdin(child_stdin: ChildStdin) -> Self

Write to the given child standard input, taking ownership of it.

source

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.

source

pub fn null() -> Result<Self>

Write to the null device, which ignores all data.

Trait Implementations§

source§

impl AsFd for StreamWriter

source§

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

Borrows the file descriptor. Read more
source§

impl AsRawFd for StreamWriter

source§

fn as_raw_fd(&self) -> RawFd

Extracts the raw file descriptor. Read more
source§

impl Debug for StreamWriter

source§

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

Formats the value using the given formatter. Read more
source§

impl Write for StreamWriter

source§

fn write(&mut self, buf: &[u8]) -> Result<usize>

Write a buffer into this writer, returning how many bytes were written. Read more
source§

fn flush(&mut self) -> Result<()>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
source§

fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize>

Like write, except that it writes from a slice of buffers. Read more
source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. Read more
source§

fn write_all(&mut self, buf: &[u8]) -> Result<()>

Attempts to write an entire buffer into this writer. Read more
source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<()>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
source§

fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsFilelike for T
where T: AsFd,

source§

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

Borrows the reference. Read more
source§

fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>
where Target: FilelikeViewType,

Return a borrowing view of a resource which dereferences to a &Target. Read more
source§

impl<T> AsGrip for T
where T: AsFd,

source§

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

Extracts the grip.
source§

impl<T> AsRawFilelike for T
where T: AsRawFd,

source§

fn as_raw_filelike(&self) -> i32

Returns the raw value.
source§

impl<T> AsRawGrip for T
where T: AsRawFd,

source§

fn as_raw_grip(&self) -> i32

Extracts the raw grip.
source§

impl<T> AsRawSocketlike for T
where T: AsRawFd,

source§

fn as_raw_socketlike(&self) -> i32

Returns the raw value.
source§

impl<T> AsSocketlike for T
where T: AsFd,

source§

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

Borrows the reference.
source§

fn as_socketlike_view<Target>(&self) -> SocketlikeView<'_, Target>
where Target: SocketlikeViewType,

Return a borrowing view of a resource which dereferences to a &Target. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> FileIoExt for T
where T: AsFilelike + IoExt,

source§

fn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<(), Error>

Announce the expected access pattern of the data at the given offset.
source§

fn allocate(&self, offset: u64, len: u64) -> Result<(), Error>

Allocate space in the file, increasing the file size as needed, and ensuring that there are no holes under the given range.
source§

fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize, Error>

Reads a number of bytes starting from a given offset. Read more
source§

fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<(), Error>

Reads the exact number of byte required to fill buf from the given offset. Read more
source§

fn read_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<usize, Error>

Is to read_vectored what read_at is to read.
source§

fn is_read_vectored_at(&self) -> bool

Determines if this 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>

Read all bytes, starting at 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>

Read all bytes, starting at offset, until EOF in this source, appending them to buf.
source§

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize, Error>

Writes a number of bytes starting from a given offset. Read more
source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<(), Error>

Attempts to write an entire buffer starting from a given offset. Read more
source§

fn write_vectored_at( &self, bufs: &[IoSlice<'_>], offset: u64 ) -> Result<usize, Error>

Is to write_vectored what write_at is to write.
source§

fn is_write_vectored_at(&self) -> bool

Determines if this FileIoExt implementation has an efficient write_vectored_at implementation.
source§

fn append(&self, buf: &[u8]) -> Result<usize, Error>

Writes a number of bytes at the end of a file. Read more
source§

fn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Is to append what write_vectored is to write.
source§

fn is_append_vectored(&self) -> bool

Determines if this FileIoExt implementation has an efficient append_vectored implementation.
source§

fn seek(&self, pos: SeekFrom) -> Result<u64, Error>

Seek to an offset, in bytes, in a stream. Read more
source§

fn stream_position(&self) -> Result<u64, Error>

Returns the current seek position from the start of the stream. Read more
source§

fn read_exact_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<(), Error>

Is to 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>

Is to write_all_vectored what write_all_at is to write_all.
source§

fn append_all(&self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer at the end of a file. Read more
source§

fn append_all_vectored(&self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

Is to append_all what write_all_vectored is to write_all.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> GetSetFdFlags for T

source§

fn get_fd_flags(&self) -> Result<FdFlags, Error>
where T: AsFilelike,

Query the “status” flags for the self file descriptor.
source§

fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>
where T: AsFilelike,

Create a new SetFdFlags value for use with set_fd_flags. Read more
source§

fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>
where T: AsFilelike,

Set the “status” flags for the self file descriptor. Read more
source§

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

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> IoExt for T

source§

fn read(&self, buf: &mut [u8]) -> Result<usize, Error>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
source§

fn read_exact(&self, buf: &mut [u8]) -> Result<(), Error>

Read the exact number of bytes required to fill buf. Read more
source§

fn read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

Like read, except that it reads into a slice of buffers. Read more
source§

fn read_to_end(&self, buf: &mut Vec<u8>) -> Result<usize, Error>

Read all bytes until EOF in this source, placing them into buf. Read more
source§

fn read_to_string(&self, buf: &mut String) -> Result<usize, Error>

Read all bytes until EOF in this source, appending them to buf. Read more
source§

fn peek(&self, buf: &mut [u8]) -> Result<usize, Error>

Read bytes from the current position without advancing the current position. Read more
source§

fn write(&self, buf: &[u8]) -> Result<usize, Error>

Write a buffer into this writer, returning how many bytes were written. Read more
source§

fn write_all(&self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
source§

fn write_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like write, except that it writes from a slice of buffers. Read more
source§

fn flush(&self) -> Result<(), Error>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
source§

fn write_fmt(&self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
source§

fn read_exact_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<(), Error>

Is to read_vectored what read_exact is to read.
source§

fn write_all_vectored(&self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

Is to write_vectored what write_all is to write.
source§

impl<T> IsReadWrite for T
where T: AsFilelike,

source§

fn is_read_write(&self) -> Result<(bool, bool), Error>

Test whether the handle is readable and/or writable.
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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.
source§

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

Performs the conversion.