next-gen 0.0.5

Safe generators on stable Rust.
Documentation
use ::core::{
    task::{RawWaker, RawWakerVTable, Waker},
};

pub
fn create ()
  -> Waker
{
    unsafe {
        // # Safety
        //
        //   - Waker has no context so all the provided methods are no-ops
        //     and thus sound.
        Waker::from_raw(RAW_WAKER)
    }
}

const RAW_WAKER: RawWaker =
    RawWaker::new(0 as _, &VTABLE)
;

const VTABLE: RawWakerVTable =
    RawWakerVTable::new(clone, wake, wake_by_ref, drop)
;

unsafe // Safety: no-op function
fn clone (_: *const ())
  -> RawWaker
{
    RAW_WAKER
}

unsafe // Safety: no-op function
fn wake (_: *const ())
{}

unsafe // Safety: no-op function
fn wake_by_ref (_: *const ())
{}

unsafe // Safety: no-op function
fn drop (_: *const ())
{}