mlua 0.2.0

High level bindings to Lua 5.1/5.2/5.3 (including LuaJIT) with support of writing native lua modules in Rust.
Documentation
use mlua::{Lua, Table, Result};

struct Test {
    field: i32,
}

fn main() {
    let lua = Lua::new();
    lua.scope(|scope| -> Result<()> {
        let mut inner: Option<Table> = None;
        let f = scope
            .create_function_mut(|_, t: Table| {
                inner = Some(t);
                Ok(())
            })?;
        f.call::<_, ()>(lua.create_table()?)?;
        Ok(())
    });
}