#lua #lua-jit #calling #interfacing #wrapper #running #api

无 std tinylj

Rust 库用于从 Rust 调用 LuaJIT

3 个版本

使用旧的 Rust 2015

0.1.3 2023 年 6 月 21 日
0.1.2 2023 年 6 月 21 日
0.1.1 2023 年 6 月 21 日

#791 in 编程语言

MIT 许可证

48KB
957

TinyLJ

Github

Fork of luajit-rs

用于从 Rust 与 LuaJIT 交互的库,用于运行高性能 Lua 代码,可以与用 Rust 编写的本地代码集成。

入门指南

use tinylj::{c_int, State, lua_fn};

fn return_42(state: &mut State) -> c_int {
    state.push(42);

    1
}

pub fn main() {
    let mut state = State::new();
    state.open_libs();
    state.do_string(r#"print("Hello world!")"#);

    state.push(lua_fn!(return_42));
    state.set_global("return_42");
    state.do_string(r#"print(return_42())"#);
}

lib.rs:

TinyLJ

tinylj 是 LuaJIT 项目的简单包装,允许它从 Rust 中轻松调用,并且开销最小。该库中的大多数函数直接对应于底层的 Lua C API 调用

示例

#[macro_use]
extern crate tinylj;

use tinylj::{c_int, State};

fn return_42(state: &mut State) -> c_int {
    state.push(42);

    1
}

pub fn main() {
    let mut state = State::new();
    state.open_libs();
    state.do_string(r#"print("Hello world!")"#);

    state.push(lua_fn!(return_42));
    state.set_global("return_42");
    state.do_string(r#"print(return_42())"#);
}

依赖项

~0–1.4MB
~21K SLoC