llua 0.1.3

Low level bindings to Lua5.4
Documentation
use llua::*;

#[tokio::test]
async fn llua_async() {
    let s = State::new();
    s.open_libs();

    let g = s.global();
    g.register(
        "echo_async",
        |s: State, n: i32| async move { s.pushed((0, n)) },
    );
    g.register("sleep_async", tokio::time::sleep);

    let co = Coroutine::empty(&s);
    co.load_string(
        "
        print(echo_async(...))
        -- error 'error test'
        sleep_async(0.2)
        print(echo_async(2))
        print(echo_async(3))
        return 1, 2
    ",
    )
    .unwrap();

    let ret = co.call_async::<_, (i32, i32)>(333, None).await.unwrap();
    assert_eq!(ret, (1, 2));
}