lune_std/
lib.rs

1#![allow(clippy::cargo_common_metadata)]
2
3use mlua::prelude::*;
4
5mod global;
6mod globals;
7mod library;
8mod require;
9
10pub use self::global::LuneStandardGlobal;
11pub use self::globals::version::set_global_version;
12pub use self::library::LuneStandardLibrary;
13
14/**
15    Injects all standard globals into the given Lua state / VM.
16
17    This **does not** include standard libraries - see `inject_std`.
18
19    # Errors
20
21    Errors when out of memory, or if *default* Lua globals are missing.
22*/
23pub fn inject_globals(lua: Lua) -> LuaResult<()> {
24    for global in LuneStandardGlobal::ALL {
25        lua.globals()
26            .set(global.name(), global.create(lua.clone())?)?;
27    }
28    Ok(())
29}
30
31/**
32    Injects all standard libraries into the given Lua state / VM.
33
34    # Errors
35
36    Errors when out of memory, or if *default* Lua globals are missing.
37*/
38pub fn inject_std(lua: Lua) -> LuaResult<()> {
39    for library in LuneStandardLibrary::ALL {
40        let alias = format!("@lune/{}", library.name());
41        let module = library.module(lua.clone())?;
42        lua.register_module(&alias, module)?;
43    }
44    Ok(())
45}