pub struct Stream { /* private fields */ }Expand description
A handle on a process’ Output or Error streams.
The Handle can either be used asynchronously to read content as it is filled by the child,
or synchronously by calling read_all, which will wait until the child terminates, then
collect all output. For async, you can use read_line, or read for an exact byte count.
Content pulled with async functions are removed from the handle–it will not be present in read_all.
Therefore, you likely want to either use this handle in one of the two modes.
§Examples
Synchronous.
use std::os::fd::{OwnedFd, FromRawFd};
let mut handle = spawn::Stream::new(unsafe {OwnedFd::from_raw_fd(1)});
handle.read_all().unwrap();Asynchronous.
use std::os::fd::{OwnedFd, FromRawFd};
let mut handle = spawn::Stream::new(unsafe {OwnedFd::from_raw_fd(1)});
while let Some(line) = handle.read_line() {
println!("{line}");
}Implementations§
Source§impl Stream
impl Stream
Sourcepub fn new(owned_fd: OwnedFd) -> Self
pub fn new(owned_fd: OwnedFd) -> Self
Construct a new StreamHandle from an OwnedFd connected to the child.
Sourcepub fn read_line(&self) -> Option<String>
pub fn read_line(&self) -> Option<String>
Read a line from the stream. This function is blocking, and will wait until a full line has been written to the stream. The line will then be removed from the Handle.
Sourcepub fn read_bytes(&self, bytes: Option<usize>) -> Result<Vec<u8>, Error>
pub fn read_bytes(&self, bytes: Option<usize>) -> Result<Vec<u8>, Error>
Read the exact amount of bytes specified, or else throw an error. This function is blocking.
Sourcepub fn read_blocking(&mut self) -> Result<String, Error>
pub fn read_blocking(&mut self) -> Result<String, Error>
Read everything currently in the pipe, blocking.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Stream
impl !RefUnwindSafe for Stream
impl Send for Stream
impl Sync for Stream
impl Unpin for Stream
impl !UnwindSafe for Stream
Blanket Implementations§
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
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 more