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

pub unsafe trait UnsafeStreamObj<'a, T>: 'a {
    fn into_raw(self) -> *mut ();
unsafe fn poll_next(ptr: *mut (), waker: &Waker) -> 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

fn into_raw(self) -> *mut ()

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

unsafe fn poll_next(ptr: *mut (), waker: &Waker) -> Poll<Option<T>>

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.

unsafe fn drop(ptr: *mut ())

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.

Loading content...

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 Pin<&'a mut 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 Pin<Box<F>> where
    F: Stream<Item = T> + 'a, 
[src]

Loading content...

Implementors

Loading content...