mirror of
https://github.com/hexedtech/codemp.git
synced 2024-12-24 13:54:53 +01:00
28 lines
803 B
Markdown
28 lines
803 B
Markdown
|
# Lua bindings
|
||
|
Lua allows directly `require`ing properly constructed shared objects, so glue code can live completely on the Rust side.
|
||
|
|
||
|
The Lua-compatible wrappers are built with [`mlua`](https://github.com/mlua-rs/mlua).
|
||
|
|
||
|
To build, just `cargo build --release --features=lua` and rename the resulting `libcodemp.so` / `codemp.dll` / `codemp.dylib` in `codemp_native.so/dll/dylib`.
|
||
|
This is important because Lua looks up the constructor symbol based on filename.
|
||
|
|
||
|
Type hints are provided in `annotations.lua`, just include them in your language server: `---@module 'annotations'`.
|
||
|
|
||
|
## Example loader
|
||
|
A simple loader is provided here:
|
||
|
|
||
|
```lua
|
||
|
---@module 'annotations'
|
||
|
|
||
|
---@return Codemp
|
||
|
local function load()
|
||
|
local native, _ = require("codemp.native")
|
||
|
return native
|
||
|
end
|
||
|
|
||
|
return {
|
||
|
load = load,
|
||
|
}
|
||
|
```
|
||
|
|