pub struct Destination<'a, T, B> { /* private fields */ }Expand description
Represents the buffer for a host- or guest-initiated stream read.
Implementations§
Source§impl<'a, T, B> Destination<'a, T, B>
impl<'a, T, B> Destination<'a, T, B>
Sourcepub fn reborrow(&mut self) -> Destination<'_, T, B>
pub fn reborrow(&mut self) -> Destination<'_, T, B>
Reborrow self so it can be used again later.
Sourcepub fn take_buffer(&mut self) -> Bwhere
B: Default,
pub fn take_buffer(&mut self) -> Bwhere
B: Default,
Take the buffer out of self, leaving a default-initialized one in its
place.
This can be useful for reusing the previously-stored buffer’s capacity instead of allocating a fresh one.
Sourcepub fn set_buffer(&mut self, buffer: B)
pub fn set_buffer(&mut self, buffer: B)
Store the specified buffer in self.
Any items contained in the buffer will be delivered to the reader after
the StreamProducer::poll_produce call to which this Destination was
passed returns (unless overwritten by another call to set_buffer).
If items are stored via this buffer and written via a
DirectDestination view of self, then the items in the buffer will be
delivered after the ones written using DirectDestination.
Sourcepub fn remaining(&self, store: impl AsContextMut) -> Option<usize>
pub fn remaining(&self, store: impl AsContextMut) -> Option<usize>
Return the remaining number of items the current read has capacity to accept, if known.
This will return Some(_) if the reader is a guest; it will return
None if the reader is the host.
Note that, if this returns None(0), the producer must still attempt to
produce at least one item if the value of finish passed to
StreamProducer::poll_produce is false. In that case, the reader is
effectively asking when the producer will be able to produce items
without blocking (or reach a terminal state such as end-of-stream),
meaning the next non-zero read must complete without blocking.
Source§impl<'a, B> Destination<'a, u8, B>
impl<'a, B> Destination<'a, u8, B>
Sourcepub fn as_direct<D>(
self,
store: StoreContextMut<'a, D>,
capacity: usize,
) -> DirectDestination<'a, D>
pub fn as_direct<D>( self, store: StoreContextMut<'a, D>, capacity: usize, ) -> DirectDestination<'a, D>
Return a DirectDestination view of self.
If the reader is a guest, this will provide direct access to the guest’s
read buffer. If the reader is a host, this will provide access to a
buffer which will be delivered to the host before any items stored using
Destination::set_buffer.
capacity will only be used if the reader is a host, in which case it
will update the length of the buffer, possibly zero-initializing the new
elements if the new length is larger than the old length.
Auto Trait Implementations§
impl<'a, T, B> Freeze for Destination<'a, T, B>
impl<'a, T, B> RefUnwindSafe for Destination<'a, T, B>where
B: RefUnwindSafe,
impl<'a, T, B> Send for Destination<'a, T, B>where
B: Send,
impl<'a, T, B> Sync for Destination<'a, T, B>where
B: Sync,
impl<'a, T, B> Unpin for Destination<'a, T, B>
impl<'a, T, B> !UnwindSafe for Destination<'a, T, B>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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