Struct Process

Source
pub struct Process<R: AsyncRead> { /* private fields */ }
Expand description

A spawned process.

Wraps AsyncPtyMaster and Child from tokio-pty-process to provide a view of the process as a single stream which emits events. In particular, the stream will return an event when the process starts, when it writes output to the pty, and when it exits. See the Event type for more details.

Implementations§

Source§

impl<R: AsyncRead + 'static> Process<R>

Source

pub fn new(cmd: &str, args: &[String], input: R) -> Self

Creates a new process stream.

The process is not spawned and the pty is not opened until poll is called.

Takes as input the command and arguments to run, as well as the AsyncRead object to read input from. Typically you will pass in something connected to stdin here, although other options may be more useful for automation or testing.

Source

pub fn resize(&mut self, rows: u16, cols: u16)

Requests a change to the pty’s terminal size.

This will only be applied on the next call to poll.

Source

pub fn input(&mut self) -> &mut R

Returns a mutable reference to the input object provided in the constructor.

This can be useful if you are driving the input manually, rather than just hooking it up directly to stdin.

Trait Implementations§

Source§

impl<R: AsyncRead + 'static> Stream for Process<R>

Source§

type Item = Event

The type of item this stream will yield on success.
Source§

type Error = Error

The type of error this stream may generate.
Source§

fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error>

Attempt to pull out the next value of this stream, returning None if the stream is finished. Read more
Source§

fn wait(self) -> Wait<Self>
where Self: Sized,

Creates an iterator which blocks the current thread until each item of this stream is resolved. Read more
Source§

fn into_future(self) -> StreamFuture<Self>
where Self: Sized,

Converts this stream into a Future. Read more
Source§

fn map<U, F>(self, f: F) -> Map<Self, F>
where F: FnMut(Self::Item) -> U, Self: Sized,

Converts a stream of type T to a stream of type U. Read more
Source§

fn map_err<U, F>(self, f: F) -> MapErr<Self, F>
where F: FnMut(Self::Error) -> U, Self: Sized,

Converts a stream of error type T to a stream of error type U. Read more
Source§

fn filter<F>(self, f: F) -> Filter<Self, F>
where F: FnMut(&Self::Item) -> bool, Self: Sized,

Filters the values produced by this stream according to the provided predicate. Read more
Source§

fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F>
where F: FnMut(Self::Item) -> Option<B>, Self: Sized,

Filters the values produced by this stream while simultaneously mapping them to a different type. Read more
Source§

fn then<F, U>(self, f: F) -> Then<Self, F, U>
where F: FnMut(Result<Self::Item, Self::Error>) -> U, U: IntoFuture, Self: Sized,

Chain on a computation for when a value is ready, passing the resulting item to the provided closure f. Read more
Source§

fn and_then<F, U>(self, f: F) -> AndThen<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Error = Self::Error>, Self: Sized,

Chain on a computation for when a value is ready, passing the successful results to the provided closure f. Read more
Source§

fn or_else<F, U>(self, f: F) -> OrElse<Self, F, U>
where F: FnMut(Self::Error) -> U, U: IntoFuture<Item = Self::Item>, Self: Sized,

Chain on a computation for when an error happens, passing the erroneous result to the provided closure f. Read more
Source§

fn collect(self) -> Collect<Self>
where Self: Sized,

Collect all of the values of this stream into a vector, returning a future representing the result of that computation. Read more
Source§

fn fold<F, T, Fut>(self, init: T, f: F) -> Fold<Self, F, Fut, T>
where F: FnMut(T, Self::Item) -> Fut, Fut: IntoFuture<Item = T>, Self::Error: From<<Fut as IntoFuture>::Error>, Self: Sized,

Execute an accumulating computation over a stream, collecting all the values into one final result. Read more
Source§

fn skip_while<P, R>(self, pred: P) -> SkipWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Skip elements on this stream while the predicate provided resolves to true. Read more
Source§

fn take_while<P, R>(self, pred: P) -> TakeWhile<Self, P, R>
where P: FnMut(&Self::Item) -> R, R: IntoFuture<Item = bool, Error = Self::Error>, Self: Sized,

Take elements from this stream while the predicate provided resolves to true. Read more
Source§

fn for_each<F, U>(self, f: F) -> ForEach<Self, F, U>
where F: FnMut(Self::Item) -> U, U: IntoFuture<Item = (), Error = Self::Error>, Self: Sized,

Runs this stream to completion, executing the provided closure for each element on the stream. Read more
Source§

fn from_err<E>(self) -> FromErr<Self, E>
where E: From<Self::Error>, Self: Sized,

Map this stream’s error to any error implementing From for this stream’s Error, returning a new stream. Read more
Source§

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

Creates a new stream of at most amt items of the underlying stream. Read more
Source§

fn skip(self, amt: u64) -> Skip<Self>
where Self: Sized,

Creates a new stream which skips amt items of the underlying stream. Read more
Source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a stream such that poll will never again be called once it has finished. Read more
Source§

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

Borrows a stream, rather than consuming it. Read more
Source§

fn catch_unwind(self) -> CatchUnwind<Self>
where Self: Sized + UnwindSafe,

Catches unwinding panics while polling the stream. Read more
Source§

fn merge<S>(self, other: S) -> Merge<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

👎Deprecated: functionality provided by select now
An adapter for merging the output of two streams. Read more
Source§

fn zip<S>(self, other: S) -> Zip<Self, S>
where S: Stream<Error = Self::Error>, Self: Sized,

An adapter for zipping two streams together. Read more
Source§

fn chain<S>(self, other: S) -> Chain<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Adapter for chaining two stream. Read more
Source§

fn peekable(self) -> Peekable<Self>
where Self: Sized,

Creates a new stream which exposes a peek method. Read more
Source§

fn chunks(self, capacity: usize) -> Chunks<Self>
where Self: Sized,

An adaptor for chunking up items of the stream inside a vector. Read more
Source§

fn select<S>(self, other: S) -> Select<Self, S>
where S: Stream<Item = Self::Item, Error = Self::Error>, Self: Sized,

Creates a stream that selects the next element from either this stream or the provided one, whichever is ready first. Read more
Source§

fn forward<S>(self, sink: S) -> Forward<Self, S>
where S: Sink<SinkItem = Self::Item>, Self::Error: From<<S as Sink>::SinkError>, Self: Sized,

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more
Source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnMut(&Self::Item), Self: Sized,

Do something with each item of this stream, afterwards passing it on. Read more
Source§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
where F: FnMut(&Self::Error), Self: Sized,

Do something with the error of this stream, afterwards passing it on. Read more

Auto Trait Implementations§

§

impl<R> !Freeze for Process<R>

§

impl<R> !RefUnwindSafe for Process<R>

§

impl<R> Send for Process<R>
where R: Send,

§

impl<R> !Sync for Process<R>

§

impl<R> Unpin for Process<R>
where R: Unpin,

§

impl<R> !UnwindSafe for Process<R>

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> 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, 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<St> StreamExt for St
where St: Stream,

Source§

fn context<C, E>(self, context: C) -> Context<St, C, E>
where C: IntoError<E, Source = <St as Stream>::Error> + Clone, E: Error + ErrorCompat,

Extend a Stream’s error with additional context-sensitive information. Read more
Source§

fn with_context<F, C, E>(self, context: F) -> WithContext<St, F, E>
where F: FnMut() -> C, C: IntoError<E, Source = <St as Stream>::Error>, E: Error + ErrorCompat,

Extend a Stream’s error with lazily-generated context-sensitive information. Read more
Source§

impl<T> StreamExt for T
where T: Stream + ?Sized,

Source§

fn throttle(self, duration: Duration) -> Throttle<Self>
where Self: Sized,

Throttle down the stream by enforcing a fixed delay between items. Read more
Source§

fn enumerate(self) -> Enumerate<Self>
where Self: Sized,

Creates a new stream which gives the current iteration count as well as the next value. Read more
Source§

fn timeout(self, timeout: Duration) -> Timeout<Self>
where Self: Sized,

Creates a new stream which allows self until timeout. Read more
Source§

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

Source§

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

Source§

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.