#lua-bindings #pyo3 #oriented #mlua #macro #expect #loosely

luao3

基于宏的 Rust 到 Lua 的绑定。松散地受到 pyo3 启发,但基于 mlua。

1 个不稳定版本

0.1.2 2022年3月13日
0.1.1 2022年3月13日
0.1.0 2022年3月13日

#6#mlua

MIT 许可证

13KB
224

luao3 Crates.io docs.rs

基于宏的 Rust 到 Lua 的绑定。

松散地模仿了 PyO3。基于 mlua

警告:此软件为 ALPHA 质量。预期会有破坏性的更改和 API 的删除/添加。

示例

use luao3::prelude::*;
use mlua::prelude::*;

#[derive(Debug, FromLua, ToLua)]
struct Foo {
    foo: String,
    #[lua(default)]
    bar: Vec<String>
}

#[lua_function]
pub fn bar(a: Foo) -> LuaResult<Foo> {
    Ok(Foo {
        foo: format!("baz{}", a.foo),
        bar: vec!["foo".into(), "baz".into(), a.bar.get(0).cloned()
            .unwrap_or_else(|| "baz".into())]
    })
}

#[lua_function]
pub fn baz(txt: String) -> LuaResult<i32> {
    txt.parse::<i32>().map_err(mlua::Error::external)
}

luao3::declare_simple_module! {
    name => foobar,
    members => {
        fn bar,
        fn baz as baz2
    }
}

依赖项

~7–10MB
~175K SLoC