1 Star 0 Fork 0

rustup/mlua

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
lib.rs 1.32 KB
一键复制 编辑 原始数据 按行查看 历史
use mlua::prelude::*;
fn sum(_: &Lua, (a, b): (i64, i64)) -> LuaResult<i64> {
Ok(a + b)
}
fn used_memory(lua: &Lua, _: ()) -> LuaResult<usize> {
Ok(lua.used_memory())
}
fn check_userdata(_: &Lua, ud: LuaAnyUserData) -> LuaResult<i32> {
Ok(ud.borrow::<MyUserData>()?.0)
}
#[mlua::lua_module]
fn test_module(lua: &Lua) -> LuaResult<LuaTable> {
let exports = lua.create_table()?;
exports.set("sum", lua.create_function(sum)?)?;
exports.set("used_memory", lua.create_function(used_memory)?)?;
exports.set("check_userdata", lua.create_function(check_userdata)?)?;
Ok(exports)
}
#[derive(Clone, Copy)]
struct MyUserData(i32);
impl LuaUserData for MyUserData {}
#[mlua::lua_module(name = "test_module_second", skip_memory_check)]
fn test_module2(lua: &Lua) -> LuaResult<LuaTable> {
let exports = lua.create_table()?;
exports.set("userdata", MyUserData(123))?;
Ok(exports)
}
#[mlua::lua_module]
fn test_module_new_vm(lua: &Lua) -> LuaResult<LuaTable> {
let eval = lua.create_function(|_, prog: String| {
let lua = Lua::new();
lua.load(prog).eval::<Option<String>>()
})?;
let exports = lua.create_table()?;
exports.set("eval", eval)?;
Ok(exports)
}
#[mlua::lua_module]
fn test_module_error(_: &Lua) -> LuaResult<LuaTable> {
Err("custom module error".into_lua_err())
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Rust
1
https://gitee.com/rustup/mlua.git
git@gitee.com:rustup/mlua.git
rustup
mlua
mlua
main

搜索帮助