async-trait-ext 0.2.1

a procedural macro for async traits
Documentation
use async_trait_ext::async_trait_ext;
use std::task::{Context, Poll};

#[test]
fn test_dynamic() {
    #[async_trait_ext(dynamic)]
    pub trait Foo {
        async fn bar(&mut self);
    }

    struct Baz;

    impl Foo for Baz {
        fn poll_bar<'a>(&'a mut self, _: &mut Context) -> Poll<()> {
            Poll::Ready(())
        }
    }

    let dynamic: &mut dyn FooExt = &mut Baz;

    let _ = async {
        dynamic.bar().await;
    };
}

#[async_trait_ext(dynamic)]
pub trait Foo {
    async fn method1(&self);
    async fn method2(&mut self);
    async fn method3(&self, a: u32);
    async fn method4(&mut self, a: u32);
    async fn method5<'a>(&'a self, a: &'a [u8]);
    async fn method6<'a>(&'a mut self, a: &'a [u8]);
}