Crates.io | lua-shared |
lib.rs | lua-shared |
version | 0.1.0 |
source | src |
created_at | 2024-04-04 11:56:18.846233 |
updated_at | 2024-04-04 11:56:18.846233 |
description | Really simple wrapper around lua_shared(_srv) that tries not to be a total burden when interfacing with gmod's lua. |
homepage | |
repository | https://github.com/IVogel/lua-shared |
max_upload_size | |
id | 1196122 |
size | 1,745,321 |
Really simple wrapper around lua_shared(_srv) that tries not to fuck your brains.
Example usecase:
use lua_shared as lua;
use lua::cstr;
use std::ffi::c_void;
#[no_mangle]
unsafe extern "C" fn gmod13_open(state: *mut c_void) -> i32 {
lua::createtable(state, 0, 2);
lua::pushfunction(state, |_| {
println!("Hello there!");
Ok(0)
});
lua::setfield(state, -2, lua::cstr!("test_immutable_closure"));
fn test_function(state: lua_State) -> Result {
println!("Hello there, but from functuin, I guess.");
Ok(0)
}
lua::pushfunction(state, test_function);
lua::setfield(state, -2, lua::cstr!("test_immutable_function"));
let mut counter = 0;
lua::pushfunction_mut(state, move |_| {
println!("Here is your counter!: {}", counter);
lua::pushinteger(state, counter);
counter += 1;
Ok(1)
});
lua::setfield(state, -2, lua::cstr!("test_mutable_closure"));
lua::setfield(state, lua::GLOBALSINDEX, lua::cstr!("tests"));
}