low-luajit 0.3.0

Low level but safe bindings to the LuaJIT C API with no dependencies and no-std support to create Lua modules using Rust.
Documentation
// This "example" is used internally by me for testing whenever developing new features, so it's not a real example...

#![cfg(not(doc))]

use std::pin::pin;
use low_luajit::{AmountReturned, LuaState, StringBuffer};

extern "C-unwind" fn test(mut lua: LuaState) -> AmountReturned {
	let buffer = pin!(StringBuffer::uninit());
	let mut buffer = lua.init_buffer(buffer);

	buffer.add_byte(b'h');
	buffer.add_char('ò');
	buffer.add_byte(b'h');
	buffer.push_result();
	buffer.add_value(|lua| lua.push_number(12.3));
	buffer.add_string("lmfao");
	let b = buffer.flush_buffer();
	b[0].write(b'!');
	unsafe { buffer.add_size_unchecked(1); }
	let b2 = buffer.add_size(3, b'?');
	b2[1] = b'!';
	buffer.push_result();

	lua.return_any(1)
}

#[unsafe(no_mangle)]
extern "C-unwind" fn luaopen_test(lua: LuaState) -> AmountReturned {
	dbg!(lua.jit_flush_trace(123213));

	lua.return_cfunction(test)
}