[][src]Trait futures_core::stream::UnsafeStreamObj

pub unsafe trait UnsafeStreamObj<'a, T>: 'a {
    fn into_raw(self) -> *mut ();
unsafe fn poll_next(ptr: *mut (), cx: &mut Context) -> Poll<Option<T>>;
unsafe fn drop(ptr: *mut ()); }

A custom implementation of a stream trait object for StreamObj, providing a hand-rolled vtable.

This custom representation is typically used only in no_std contexts, where the default Box-based implementation is not available.

The implementor must guarantee that it is safe to call poll_next repeatedly (in a non-concurrent fashion) with the result of into_raw until drop is called.

Required Methods

Convert an owned instance into a (conceptually owned) void pointer.

Poll the stream represented by the given void pointer.

Safety

The trait implementor must guarantee that it is safe to repeatedly call poll_next with the result of into_raw until drop is called; such calls are not, however, allowed to race with each other or with calls to drop.

Drops the stream represented by the given void pointer.

Safety

The trait implementor must guarantee that it is safe to call this function once per into_raw invocation; that call cannot race with other calls to drop or poll_next.

Implementations on Foreign Types

impl<'a, T, F> UnsafeStreamObj<'a, T> for &'a mut F where
    F: Stream<Item = T> + Unpin + 'a, 
[src]

impl<'a, T, F> UnsafeStreamObj<'a, T> for PinMut<'a, F> where
    F: Stream<Item = T> + 'a, 
[src]

impl<'a, T, F> UnsafeStreamObj<'a, T> for Box<F> where
    F: Stream<Item = T> + 'a, 
[src]

impl<'a, T, F> UnsafeStreamObj<'a, T> for PinBox<F> where
    F: Stream<Item = T> + 'a, 
[src]

Implementors