1#![cfg_attr(docsrs, feature(doc_cfg))]
69#![cfg_attr(not(send), allow(clippy::arc_with_non_send_sync))]
70#![allow(unsafe_op_in_unsafe_fn)]
71
72#[macro_use]
73mod macros;
74
75mod buffer;
76mod conversion;
77mod memory;
78mod multi;
79mod scope;
80mod stdlib;
81mod traits;
82mod types;
83mod util;
84mod value;
85mod vector;
86
87pub mod chunk;
88pub mod debug;
89pub mod error;
90pub mod function;
91#[cfg(any(feature = "luau", doc))]
92#[cfg_attr(docsrs, doc(cfg(feature = "luau")))]
93pub mod luau;
94pub mod prelude;
95pub mod state;
96pub mod string;
97pub mod table;
98pub mod thread;
99pub mod userdata;
100
101pub use bstr::BString;
102pub use ffi::{self, lua_CFunction, lua_State};
103#[cfg(feature = "macros")]
104#[doc(hidden)]
105pub use inventory as __inventory;
106
107#[doc(inline)]
108pub use crate::error::{Error, Result};
109#[doc(inline)]
110pub use crate::function::Function;
111pub use crate::multi::{MultiValue, Variadic};
112pub use crate::scope::Scope;
113#[doc(inline)]
114pub use crate::state::{Lua, LuaOptions, WeakLua};
115pub use crate::stdlib::StdLib;
116#[doc(inline)]
117pub use crate::string::{BorrowedBytes, BorrowedStr, LuaString};
118#[doc(inline)]
119pub use crate::table::Table;
120#[doc(inline)]
121pub use crate::thread::Thread;
122#[doc(inline)]
123pub use crate::traits::{FromLua, FromLuaMulti, IntoLua, IntoLuaMulti, ObjectLike};
124pub use crate::types::{
125 AppDataRef, AppDataRefMut, Either, Integer, LightUserData, MaybeSend, MaybeSync, Number, RegistryKey,
126 VmState,
127};
128#[doc(inline)]
129pub use crate::userdata::AnyUserData;
130pub use crate::value::{Nil, Value};
131
132#[doc(hidden)]
134pub use crate::chunk::{AsChunk, Chunk, ChunkMode};
135#[cfg(feature = "luau")]
136#[doc(hidden)]
137pub use crate::chunk::{CompileConstant, Compiler};
138#[doc(hidden)]
139pub use crate::error::{ErrorContext, ExternalError, ExternalResult};
140#[doc(hidden)]
141pub use crate::string::LuaString as String;
142#[doc(hidden)]
143pub use crate::table::{TablePairs, TableSequence};
144#[doc(hidden)]
145pub use crate::thread::{ThreadEvent, ThreadStatus, ThreadTriggers};
146#[doc(hidden)]
147pub use crate::userdata::{
148 MetaMethod, UserData, UserDataFields, UserDataMetatable, UserDataMethods, UserDataOwned, UserDataRef,
149 UserDataRefMut, UserDataRegistry,
150};
151
152#[cfg(not(feature = "luau"))]
153#[doc(inline)]
154pub use crate::debug::HookTriggers;
155
156#[cfg(any(feature = "luau", doc))]
157#[cfg_attr(docsrs, doc(cfg(feature = "luau")))]
158pub use crate::{buffer::Buffer, vector::Vector};
159
160#[cfg(feature = "serde")]
161#[doc(hidden)]
162pub use crate::serde::{DeserializeOptions, SerializeOptions};
163#[cfg(feature = "serde")]
164#[doc(inline)]
165pub use crate::{serde::LuaSerdeExt, value::SerializableValue};
166
167#[cfg(feature = "serde")]
168#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
169pub mod serde;
170
171#[cfg(feature = "mlua_derive")]
172#[allow(unused_imports)]
173#[macro_use]
174extern crate mlua_derive;
175
176#[doc = include_str!("../docs/chunk.md")]
177#[cfg(feature = "macros")]
178#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
179pub use mlua_derive::chunk;
180
181#[cfg(feature = "macros")]
186#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
187pub use mlua_derive::FromLua;
188
189#[doc = include_str!("../docs/UserData.md")]
190#[cfg(feature = "macros")]
191#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
192pub use mlua_derive::UserData;
193
194#[doc(hidden)]
195#[cfg(feature = "macros")]
196#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
197pub use mlua_derive::userdata_impl;
198
199#[doc = include_str!("../docs/lua_module.md")]
200#[cfg(all(feature = "mlua_derive", any(feature = "module", doc)))]
201#[cfg_attr(docsrs, doc(cfg(feature = "module")))]
202pub use mlua_derive::lua_module;
203
204#[cfg(all(feature = "module", feature = "send"))]
205compile_error!("`send` feature is not supported in module mode");
206
207pub(crate) mod private {
208 use super::*;
209
210 pub trait Sealed {}
211
212 impl Sealed for Error {}
213 impl<T> Sealed for std::result::Result<T, Error> {}
214 impl Sealed for Lua {}
215 impl Sealed for Table {}
216 impl Sealed for AnyUserData {}
217}