Struct StdioTransport

Source
pub struct StdioTransport { /* private fields */ }

Implementations§

Source§

impl StdioTransport

Source

pub fn new(read: Receiver<String>, write: Sender<String>) -> Self

Creates a new stdio transport instance using a child’s stdin/stdout.

Trait Implementations§

Source§

impl Transport for StdioTransport

Source§

fn send<'life0, 'async_trait>( &'life0 self, message: Message, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Sends a message by writing it to the child process’ stdin

Source§

fn receive(&self) -> Pin<Box<dyn Stream<Item = Result<Message, Error>> + Send>>

Creates a stream of messages received from the child process’ stdout

§Returns

Returns a pinned box containing a stream that yields Result<Message, Error>. The stream will continue until stdin is closed or an error occurs.

§Message Flow
  1. Messages are read from stdin in the background task created in new()
  2. Each message is sent through the broadcast channel
  3. This stream receives messages from the broadcast channel
Source§

fn close<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Closes the transport.

For stdio transport, this is a no-op as we don’t own stdin/stdout.

§Returns

Always returns Ok(()).

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

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,