task-compat 0.1.0

Utility crate to compat futures 0.1 and futures 0.3 tasks.
Documentation
use task_compat::{poll_01_to_03, poll_03_to_01, with_context, with_notify};

#[tokio::test]
async fn notify() {
    use futures01::{sync::oneshot, Future};
    use futures03::future::poll_fn;

    let (tx, mut rx) = oneshot::channel();

    let jh =
        tokio::spawn(
            async move { poll_fn(|cx| poll_01_to_03(with_notify(cx, || rx.poll()))).await },
        );

    tx.send(42).unwrap();
    let out = jh.await.unwrap().unwrap();
    assert_eq!(out, 42);
}

#[tokio::test]
async fn context() {
    use futures01::future::poll_fn;
    use futures03::compat::Compat01As03;
    use std::{future::Future, pin::Pin};
    use tokio::sync::oneshot;

    let (tx, mut rx) = oneshot::channel();

    let jh = tokio::spawn(async move {
        let fut = poll_fn(|| {
            let poll = with_context(|cx| Pin::new(&mut rx).poll(cx));
            poll_03_to_01(poll)
        });
        Compat01As03::new(fut).await
    });

    tx.send(42).unwrap();

    let out = jh.await.unwrap().unwrap();
    assert_eq!(out, 42);
}