enjoin 0.2.0

Powerful syntax-level async join macro
Documentation
#[pollster::test]
async fn sample_expansion() {
    async fn do_thing_a() -> i32 {
        20
    }
    async fn do_thing_b() -> Option<i32> {
        None
    }
    async fn inner() -> Option<&'static str> {
        let mut done = 0;
        'a: {
            enjoin::join_auto_borrow!(
                {
                    let res = do_thing_a().await;
                    if res > 3 {
                        return Some("hello");
                    } else {
                        done += 1;
                        if done == 2 {
                            break 'a;
                        }
                    }
                },
                {
                    let _res = do_thing_b().await?;
                    done += 1;
                }
            );
        };
        None
    }
    assert_eq!(inner().await, Some("hello"));
}