Comments (7)
Thanks for the feedback!
I agree that documentation need to be updated. In future I'll publish a detailed manual to cover usage / options / examples.
from mlua.
Your intuition is completely right :)
As in the example, you could just return a table of functions, that Lua will cache into package.loaded[modname]
when loading your module using require
fn func1(_: &Lua, _: ()) -> LuaResult<()> {
Ok(())
}
fn func2(_: &Lua, _: ()) -> LuaResult<()> {
Ok(())
}
#[mlua::lua_module]
fn rust_module(lua: &Lua) -> LuaResult<LuaTable> {
lua.create_table_from(vec![
("func1", lua.create_function(func1)?),
("func2", lua.create_function(func2)?),
])
}
Inside init function in your module you also have access to globals and can additionally register your data.
from mlua.
Thanks for the sample code— I will be doing this pattern a lot so maybe I will see if I can simply it with a macro, and if I do this maybe I will check back about whether you would like it upstream as a PR.
from mlua.
Thanks. As a piece of feedback, I am looking at the mlua docs and I don't see any docs for lua_module, nor do I see docs for the "module" or "mlua_derive" features. Is there a doc somewhere I am missing? Could docs for the correct usage of lua_module be added?
from mlua.
Oh, sorry, I see there are some docs in the README. Though it still doesn't seem to explain exactly what #lua_module does.
from mlua.
Okay, I think I've figured out that "standalone mode" is building a normal exe with mlua and "module mode" is building a shared object to be loaded by Lua.
I think the README would be clearer if you added a sentence under "Module mode" such as
"Use this mode to create a compiled Lua module that can be loaded from Lua code using require
."
from mlua.
I updated README
from mlua.
Related Issues (20)
- Can module mode works with async? HOT 2
- Difficulty creating a wrapper type HOT 1
- Support Audio manipulation HOT 2
- Support UI HOT 2
- Error compiling module to wasm32-unknown-emscripten
- Terra integration?
- Lifetime Issues with Scope HOT 3
- In a module best way to deal with async HOT 4
- Serialization: Recursive table detection yields false positives HOT 1
- Allow setting luau compiler options when loading with `require` HOT 2
- Builds fail with useless errors if user's global Cargo target-dir is changed HOT 3
- Send feature flag HOT 2
- bug: `c_void` not a Sync HOT 3
- Limiting script execution time (a question and a bug report) HOT 2
- Deserialize from a table with function HOT 2
- Async functions from different modules treated as normal coroutines HOT 4
- How to convert json to `mlua::Value` like `c-json.decode` HOT 4
- how to method UserData method self.vars? HOT 2
- table.concat expect got "hello" HOT 2
- Get `registry_id` from `RegistryKey` HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlua.