pub struct StreamReader { /* private fields */ }
Expand description

An unbuffered and unlocked input byte stream, implementing Read, abstracted over the source of the input.

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 input sources have high per-call overhead, it is often beneficial to wrap this in a BufReader.

Implementations§

source§

impl StreamReader

source

pub fn stdin() -> Result<Self>

Read from standard input.

Unlike std::io::stdin, this stdin returns a stream which is unbuffered and unlocked.

Since it is unbuffered, it is often beneficial to wrap the resulting StreamReader in a BufReader.

This acquires a std::io::StdinLock (in a non-recursive way) to prevent accesses to std::io::Stdin while this is live, and fails if a StreamReader or StreamDuplexer for standard input already exists.

source

pub fn file<Filelike: IntoFilelike + Read + Write + Seek>( filelike: Filelike ) -> Self

Read from 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

Read from an open TCP stream, taking ownership of it.

This method can be passed a std::net::TcpStream or similar TcpStream types.

source

pub fn pipe_reader(pipe_reader: PipeReader) -> Self

Read from the reading end of an open pipe, taking ownership of it.

source

pub fn read_from_command(command: Command) -> Result<Self>

Spawn the given command and read from its standard output.

source

pub fn child_stdout(child_stdout: ChildStdout) -> Self

Read from a child process’ standard output, taking ownership of it.

source

pub fn child_stderr(child_stderr: ChildStderr) -> Self

Read from a child process’ standard error, taking ownership of it.

source

pub fn piped_thread(boxed_read: Box<dyn Read + Send>) -> Result<Self>

Read from a boxed Read implementation, taking ownership of it. This works by creating a new thread to read the data and write it through a pipe.

source

pub fn null() -> Result<Self>

Read from the null device, which produces no data.

source

pub fn str<S: AsRef<str>>(s: S) -> Result<Self>

Read from the given string.

source

pub fn bytes(bytes: &[u8]) -> Result<Self>

Read from the given bytes.

Trait Implementations§

source§

impl AsHandleOrSocket for StreamReader

source§

impl AsRawHandleOrSocket for StreamReader

source§

impl Debug for StreamReader

source§

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

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

impl Peek for StreamReader

source§

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

Reads data from a stream without consuming it; subsequent reads will re-read the data. May return fewer bytes than requested; Ok(0) indicates that seeking is not possible (but reading may still be).
source§

impl Read for StreamReader

source§

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

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

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

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

fn is_read_vectored(&self) -> bool

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

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

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

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

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

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

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

fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Pull some bytes from this source into the specified buffer. Read more
source§

fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (read_buf)
Read the exact number of bytes required to fill cursor. Read more
1.0.0 · source§

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

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · source§

fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adapter which will read at most limit bytes from it. Read more
source§

impl ReadReady for StreamReader

source§

fn num_ready_bytes(&self) -> Result<u64>

Return the number of bytes which are ready to be read immediately. Read more
source§

impl Send for StreamReader

source§

impl Sync for StreamReader

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> AsGrip for T

source§

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

Extracts the grip.
source§

impl<T> AsRawGrip for T

source§

fn as_raw_grip(&self) -> RawHandleOrSocket

Extracts the raw grip.
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> 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>

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, 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.