[][src]Macro luajit::lua_fn

macro_rules! lua_fn {
    ($method:path) => { ... };
}

This macro is used to wrap a rust function in an extern "C" trampoline to automatically pass a State struct as the first argument instead of a lua_State raw pointer

Examples

#[macro_use] extern crate luajit;

use luajit::{State, c_int, ThreadStatus};

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

    1
}

fn main() {
    let mut state = State::new();
    state.open_libs();

    state.push(lua_fn!(return_42));
    state.set_global("return_42");
    let status = state.do_string("if return_42() ~= 42 then error() end");
    assert_eq!(status, ThreadStatus::Ok);
     
    // Equivalent
    state.register("return_42", lua_fn!(return_42).unwrap());
}