luau-vm 0.732.0

Pure-Rust Luau virtual machine, garbage collector, and standard libraries
Documentation
extern crate self as luau_vm;

#[doc(hidden)]
pub mod __macro_support {
    pub use luau_printf::ToArg;
}

#[macro_export]
macro_rules! error {
    ($thread:expr, $format:expr $(,)?) => {
        $thread.lua_error($format, [])
    };
    ($thread:expr, $format:expr, $($arg:expr),+ $(,)?) => {{
        #[allow(unused_imports)]
        use $crate::__macro_support::ToArg as _;
        let mut args = [$($arg.to_arg()),+];
        $thread.lua_error($format, &mut args)
    }};
}

#[macro_export]
macro_rules! run_error {
    ($thread:expr, $format:expr $(,)?) => {
        $thread.run_error($format, [])
    };
    ($thread:expr, $format:expr, $($arg:expr),+ $(,)?) => {{
        #[allow(unused_imports)]
        use $crate::__macro_support::ToArg as _;
        let mut args = [$($arg.to_arg()),+];
        $thread.run_error($format, &mut args)
    }};
}

#[macro_export]
macro_rules! push_fstring {
    ($thread:expr, $format:expr $(,)?) => {
        $thread.push_fstring($format, [])
    };
    ($thread:expr, $format:expr, $($arg:expr),+ $(,)?) => {{
        #[allow(unused_imports)]
        use $crate::__macro_support::ToArg as _;
        let mut args = [$($arg.to_arg()),+];
        $thread.push_fstring($format, &mut args)
    }};
}

mod buffer;
mod builtins;
mod call;
mod class;
pub mod debug;
mod error;
mod function;
mod gc;
mod handle;
pub mod internal;
mod layout;
#[allow(
    clippy::missing_safety_doc,
    reason = "standard-library installers use Thread's documented shared unsafe contract"
)]
mod libs;
mod load;
pub mod lua;
mod memory;
mod metamethod;
pub mod native;
mod number;
mod perf;
pub mod state;
pub mod string;
mod table;
pub mod thread;
pub mod types;
mod userdata;
mod value;
mod vm;

pub(crate) use crate::class::{Class, Object, ObjectMemberLookup};
pub use crate::debug::{LuaDebug, LuaDebugInterruptHook, LuaHook};
pub use crate::error::{VmControl, VmError, VmErrorResult, VmExit, VmResult};
pub use crate::gc::{
    LUA_GC_COLLECT, LUA_GC_COUNT, LUA_GC_COUNT_B, LUA_GC_IS_PAUSED, LUA_GC_IS_RUNNING,
    LUA_GC_RESTART, LUA_GC_SET_GOAL, LUA_GC_SET_STEP_MUL, LUA_GC_SET_STEP_SIZE, LUA_GC_STEP,
    LUA_GC_STOP,
};
pub use crate::native::{
    LuaUserdataRef, LuaUserdataRefMut, NativeArgument, NativeArguments, NativeCallContext,
    NativeCallResult, NativeFunction, NativeModule, RawNativeContinuation, RawNativeFunction,
};
pub use crate::perf::clock;
pub use crate::string::LuaString;
pub(crate) use crate::table::Table;
pub use crate::thread::{LuaStringBuilder, LuaStringBuilderStorage, Thread};
pub use crate::userdata::{
    LuaDestructor, LuaInlineDestructor, LuaUserdataDirectAccess, LuaUserdataDirectFieldGet,
    LuaUserdataDirectNamecall, LuaUserdataMark, USERDATA_TAG_LIMIT, UserdataDirectFieldResult,
};