Struct async_bincode::AsyncBincodeStream 
source · pub struct AsyncBincodeStream<S, R, W, D> { /* private fields */ }Expand description
A wrapper around an asynchronous stream that receives and sends bincode-encoded values.
To use, provide a stream that implements both tokio::io::AsyncWrite and
tokio::io::AsyncRead, and then use futures::Sink to send values and futures::Stream to
receive them.
Note that an AsyncBincodeStream must be of the type AsyncDestination in order to be
compatible with an AsyncBincodeReader on the remote end (recall that it requires the
serialized size prefixed to the serialized data). The default is SyncDestination, but these
can be easily toggled between using AsyncBincodeStream::for_async.
Implementations§
source§impl<S, R, W, D> AsyncBincodeStream<S, R, W, D>
 
impl<S, R, W, D> AsyncBincodeStream<S, R, W, D>
sourcepub fn get_ref(&self) -> &S
 
pub fn get_ref(&self) -> &S
Gets a reference to the underlying stream.
It is inadvisable to directly read from or write to the underlying stream.
sourcepub fn get_mut(&mut self) -> &mut S
 
pub fn get_mut(&mut self) -> &mut S
Gets a mutable reference to the underlying stream.
It is inadvisable to directly read from or write to the underlying stream.
sourcepub fn into_inner(self) -> S
 
pub fn into_inner(self) -> S
Unwraps this AsyncBincodeStream, returning the underlying stream.
Note that any leftover serialized data that has not yet been sent, or received data that has not yet been deserialized, is lost.
source§impl<S, R, W, D> AsyncBincodeStream<S, R, W, D>
 
impl<S, R, W, D> AsyncBincodeStream<S, R, W, D>
sourcepub fn for_async(self) -> AsyncBincodeStream<S, R, W, AsyncDestination>
 
pub fn for_async(self) -> AsyncBincodeStream<S, R, W, AsyncDestination>
Make this stream include the serialized data’s size before each serialized value.
This is necessary for compatability with a remote AsyncBincodeReader.
sourcepub fn for_sync(self) -> AsyncBincodeStream<S, R, W, SyncDestination>
 
pub fn for_sync(self) -> AsyncBincodeStream<S, R, W, SyncDestination>
Make this stream only send bincode-encoded values.
This is necessary for compatability with stock bincode receivers.
sourcepub fn split(
    self
) -> (AsyncBincodeReader<ReadHalf<S>, R>, AsyncBincodeWriter<WriteHalf<S>, W, D>)where
    S: AsyncRead + AsyncWrite,
 
pub fn split(
    self
) -> (AsyncBincodeReader<ReadHalf<S>, R>, AsyncBincodeWriter<WriteHalf<S>, W, D>)where
    S: AsyncRead + AsyncWrite,
Split this async stream into a write half and a read half.
Any partially sent or received state is preserved.
Trait Implementations§
source§impl<S, R, W> Default for AsyncBincodeStream<S, R, W, SyncDestination>where
    S: Default,
 
impl<S, R, W> Default for AsyncBincodeStream<S, R, W, SyncDestination>where
    S: Default,
source§impl<S, R, W> From<S> for AsyncBincodeStream<S, R, W, SyncDestination>
 
impl<S, R, W> From<S> for AsyncBincodeStream<S, R, W, SyncDestination>
source§impl<S, R, W, D> Sink for AsyncBincodeStream<S, R, W, D>where
    AsyncBincodeWriter<S, W, D>: Sink<SinkItem = W, SinkError = Error>,
 
impl<S, R, W, D> Sink for AsyncBincodeStream<S, R, W, D>where
    AsyncBincodeWriter<S, W, D>: Sink<SinkItem = W, SinkError = Error>,
§type SinkError = Box<ErrorKind, Global>
 
type SinkError = Box<ErrorKind, Global>
source§fn start_send(
    &mut self,
    item: Self::SinkItem
) -> Result<AsyncSink<Self::SinkItem>, Self::SinkError>
 
fn start_send(
    &mut self,
    item: Self::SinkItem
) -> Result<AsyncSink<Self::SinkItem>, Self::SinkError>
source§fn poll_complete(&mut self) -> Result<Async<()>, Self::SinkError>
 
fn poll_complete(&mut self) -> Result<Async<()>, Self::SinkError>
source§fn close(&mut self) -> Result<Async<()>, Self::SinkError>
 
fn close(&mut self) -> Result<Async<()>, Self::SinkError>
source§fn wait(self) -> Wait<Self>where
    Self: Sized,
 
fn wait(self) -> Wait<Self>where
    Self: Sized,
source§fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut>where
    F: FnMut(U) -> Fut,
    Fut: IntoFuture<Item = Self::SinkItem>,
    <Fut as IntoFuture>::Error: From<Self::SinkError>,
    Self: Sized,
 
fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut>where
    F: FnMut(U) -> Fut,
    Fut: IntoFuture<Item = Self::SinkItem>,
    <Fut as IntoFuture>::Error: From<Self::SinkError>,
    Self: Sized,
source§fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St>where
    F: FnMut(U) -> St,
    St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
    Self: Sized,
 
fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St>where
    F: FnMut(U) -> St,
    St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
    Self: Sized,
source§fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F>where
    F: FnOnce(Self::SinkError) -> E,
    Self: Sized,
 
fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F>where
    F: FnOnce(Self::SinkError) -> E,
    Self: Sized,
source§fn sink_from_err<E>(self) -> SinkFromErr<Self, E>where
    E: From<Self::SinkError>,
    Self: Sized,
 
fn sink_from_err<E>(self) -> SinkFromErr<Self, E>where
    E: From<Self::SinkError>,
    Self: Sized,
From for this sink’s
Error, returning a new sink. Read moresource§fn buffer(self, amt: usize) -> Buffer<Self>where
    Self: Sized,
 
fn buffer(self, amt: usize) -> Buffer<Self>where
    Self: Sized,
source§fn flush(self) -> Flush<Self>where
    Self: Sized,
 
fn flush(self) -> Flush<Self>where
    Self: Sized,
source§impl<S, R, W, D> Stream for AsyncBincodeStream<S, R, W, D>where
    AsyncBincodeReader<InternalAsyncWriter<S, W, D>, R>: Stream<Item = R, Error = Error>,
 
impl<S, R, W, D> Stream for AsyncBincodeStream<S, R, W, D>where
    AsyncBincodeReader<InternalAsyncWriter<S, W, D>, R>: Stream<Item = R, Error = Error>,
source§fn poll(&mut self) -> Result<Async<Option<Self::Item>>, Self::Error>
 
fn poll(&mut self) -> Result<Async<Option<Self::Item>>, Self::Error>
None if
the stream is finished. Read moresource§fn wait(self) -> Wait<Self>where
    Self: Sized,
 
fn wait(self) -> Wait<Self>where
    Self: Sized,
source§fn into_future(self) -> StreamFuture<Self>where
    Self: Sized,
 
fn into_future(self) -> StreamFuture<Self>where
    Self: Sized,
Future. Read moresource§fn map_err<U, F>(self, f: F) -> MapErr<Self, F>where
    F: FnMut(Self::Error) -> U,
    Self: Sized,
 
fn map_err<U, F>(self, f: F) -> MapErr<Self, F>where
    F: FnMut(Self::Error) -> U,
    Self: Sized,
source§fn filter<F>(self, f: F) -> Filter<Self, F>where
    F: FnMut(&Self::Item) -> bool,
    Self: Sized,
 
fn filter<F>(self, f: F) -> Filter<Self, F>where
    F: FnMut(&Self::Item) -> bool,
    Self: Sized,
source§fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F>where
    F: FnMut(Self::Item) -> Option<B>,
    Self: Sized,
 
fn filter_map<F, B>(self, f: F) -> FilterMap<Self, F>where
    F: FnMut(Self::Item) -> Option<B>,
    Self: Sized,
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,
 
fn then<F, U>(self, f: F) -> Then<Self, F, U>where
    F: FnMut(Result<Self::Item, Self::Error>) -> U,
    U: IntoFuture,
    Self: Sized,
f. Read moresource§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,
 
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,
f. Read moresource§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,
 
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,
f. Read moresource§fn collect(self) -> Collect<Self>where
    Self: Sized,
 
fn collect(self) -> Collect<Self>where
    Self: Sized,
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,
 
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,
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,
 
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,
true. Read moresource§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,
 
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,
true. Read moresource§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,
 
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,
source§fn from_err<E>(self) -> FromErr<Self, E>where
    E: From<Self::Error>,
    Self: Sized,
 
fn from_err<E>(self) -> FromErr<Self, E>where
    E: From<Self::Error>,
    Self: Sized,
From for
this stream’s Error, returning a new stream. Read moresource§fn take(self, amt: u64) -> Take<Self>where
    Self: Sized,
 
fn take(self, amt: u64) -> Take<Self>where
    Self: Sized,
amt items of the underlying stream. Read moresource§fn skip(self, amt: u64) -> Skip<Self>where
    Self: Sized,
 
fn skip(self, amt: u64) -> Skip<Self>where
    Self: Sized,
amt items of the underlying stream. Read moresource§fn fuse(self) -> Fuse<Self>where
    Self: Sized,
 
fn fuse(self) -> Fuse<Self>where
    Self: Sized,
poll will never again be called once it has
finished. Read moresource§fn by_ref(&mut self) -> &mut Selfwhere
    Self: Sized,
 
fn by_ref(&mut self) -> &mut Selfwhere
    Self: Sized,
source§fn merge<S>(self, other: S) -> Merge<Self, S>where
    S: Stream<Error = Self::Error>,
    Self: Sized,
 
fn merge<S>(self, other: S) -> Merge<Self, S>where
    S: Stream<Error = Self::Error>,
    Self: Sized,
select nowsource§fn zip<S>(self, other: S) -> Zip<Self, S>where
    S: Stream<Error = Self::Error>,
    Self: Sized,
 
fn zip<S>(self, other: S) -> Zip<Self, S>where
    S: Stream<Error = Self::Error>,
    Self: Sized,
source§fn chain<S>(self, other: S) -> Chain<Self, S>where
    S: Stream<Item = Self::Item, Error = Self::Error>,
    Self: Sized,
 
fn chain<S>(self, other: S) -> Chain<Self, S>where
    S: Stream<Item = Self::Item, Error = Self::Error>,
    Self: Sized,
source§fn peekable(self) -> Peekable<Self>where
    Self: Sized,
 
fn peekable(self) -> Peekable<Self>where
    Self: Sized,
peek method. Read more