Crates.io | luao3 |
lib.rs | luao3 |
version | 0.1.2 |
source | src |
created_at | 2022-03-13 00:03:13.715793 |
updated_at | 2022-03-13 00:21:45.636399 |
description | Lua bindings for Rust, oriented around macros. Lossly inspired by pyo3, but based on mlua. |
homepage | |
repository | https://github.com/Techcable/luao3 |
max_upload_size | |
id | 548964 |
size | 14,902 |
Lua bindings for Rust, oriented around macros.
Modeled loosely after PyO3. Based on mlua.
WARNING: This software is ALPHA quality. Expect breaking changes and API removals/additions.
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
}
}