Struct StreamWriter

Source
pub struct StreamWriter<T> { /* private fields */ }
Available on crate features runtime and component-model and component-model-async only.
Expand description

Represents the writable end of a Component Model stream.

Note that StreamWriter instances must be disposed of using close; otherwise the in-store representation will leak and the reader end will hang indefinitely. Consider using GuardedStreamWriter to ensure that disposal happens automatically.

Implementations§

Source§

impl<T> StreamWriter<T>

Source

pub fn is_closed(&self) -> bool

Returns whether this stream is “closed” meaning that the other end of the stream has been dropped.

Source

pub async fn write<B>(&mut self, accessor: impl AsAccessor, buffer: B) -> B
where T: Lower + 'static, B: WriteBuffer<T>,

Write the specified items to the stream.

Note that this will only write as many items as the reader accepts during its current or next read. Use write_all to loop until the buffer is drained or the read end is dropped.

The returned Future will yield the input buffer back, possibly consuming a subset of the items or nothing depending on the number of items the reader accepted.

The is_closed method can be used to determine whether the stream was learned to be closed after this operation completes.

§Panics

Panics if the store that the [Accessor] is derived from does not own this future.

Source

pub async fn write_all<B>(&mut self, accessor: impl AsAccessor, buffer: B) -> B
where T: Lower + 'static, B: WriteBuffer<T>,

Write the specified values until either the buffer is drained or the read end is dropped.

The buffer is returned back to the caller and may still contain items within it if the other end of this stream was dropped. Use the is_closed method to determine if the other end is dropped.

§Panics

Panics if the store that the [Accessor] is derived from does not own this future.

Source

pub async fn watch_reader(&mut self, accessor: impl AsAccessor)

Wait for the read end of this stream to be dropped.

§Panics

Panics if the store that the [Accessor] is derived from does not own this future.

Source

pub fn close(&mut self, store: impl AsContextMut)

Close this StreamWriter, writing the default value.

§Panics

Panics if the store that the [Accessor] is derived from does not own this future. Usage of this future after calling close will also cause a panic.

Source

pub fn close_with(&mut self, accessor: impl AsAccessor)

Convenience method around Self::close.

Source

pub fn guard<A>(self, accessor: A) -> GuardedStreamWriter<T, A>
where A: AsAccessor,

Returns a GuardedStreamWriter which will auto-close this stream on drop and clean it up from the store.

Note that the accessor provided must own this future and is additionally transferred to the GuardedStreamWriter return value.

Trait Implementations§

Source§

impl<T, A> From<GuardedStreamWriter<T, A>> for StreamWriter<T>
where A: AsAccessor,

Source§

fn from(guard: GuardedStreamWriter<T, A>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> Freeze for StreamWriter<T>

§

impl<T> RefUnwindSafe for StreamWriter<T>
where T: RefUnwindSafe,

§

impl<T> Send for StreamWriter<T>
where T: Send,

§

impl<T> Sync for StreamWriter<T>
where T: Sync,

§

impl<T> Unpin for StreamWriter<T>
where T: Unpin,

§

impl<T> UnwindSafe for StreamWriter<T>
where T: UnwindSafe,

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.