diff --git a/src/conversion.rs b/src/conversion.rs index 1b0a0bc..6fac7e6 100644 --- a/src/conversion.rs +++ b/src/conversion.rs @@ -288,7 +288,7 @@ impl<'lua, T: ToLua<'lua>> ToLua<'lua> for Option { fn to_lua(self, lua: &'lua Lua) -> Result> { match self { Some(val) => val.to_lua(lua), - None => Ok(LuaNil), + None => Ok(Nil), } } } @@ -296,7 +296,7 @@ impl<'lua, T: ToLua<'lua>> ToLua<'lua> for Option { impl<'lua, T: FromLua<'lua>> FromLua<'lua> for Option { fn from_lua(value: Value<'lua>, lua: &'lua Lua) -> Result { match value { - LuaNil => Ok(None), + Nil => Ok(None), value => Ok(Some(T::from_lua(value, lua)?)), } } diff --git a/src/error.rs b/src/error.rs index 6e81b22..a11d84b 100644 --- a/src/error.rs +++ b/src/error.rs @@ -94,11 +94,11 @@ impl Error { } } -pub trait LuaExternalError { +pub trait ExternalError { fn to_lua_err(self) -> Error; } -impl LuaExternalError for E +impl ExternalError for E where E: Into>, { @@ -122,13 +122,13 @@ where } } -pub trait LuaExternalResult { +pub trait ExternalResult { fn to_lua_err(self) -> Result; } -impl LuaExternalResult for ::std::result::Result +impl ExternalResult for ::std::result::Result where - E: LuaExternalError, + E: ExternalError, { fn to_lua_err(self) -> Result { self.map_err(|e| e.to_lua_err()) diff --git a/src/lib.rs b/src/lib.rs index ee25344..2a36825 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,10 @@ mod multi; #[cfg(test)] mod tests; -pub use error::*; -pub use lua::*; -pub use multi::*; +pub use error::{Error, Result, ExternalError, ExternalResult}; +pub use lua::{Value, Nil, ToLua, FromLua, MultiValue, ToLuaMulti, FromLuaMulti, Integer, Number, + LightUserData, String, Table, TablePairs, TableSequence, Function, ThreadStatus, + Thread, MetaMethod, UserDataMethods, UserData, AnyUserData, Lua}; +pub use multi::Variadic; + +pub mod prelude; diff --git a/src/lua.rs b/src/lua.rs index 7559ef7..f97eae5 100644 --- a/src/lua.rs +++ b/src/lua.rs @@ -48,7 +48,7 @@ pub enum Value<'lua> { /// it is implicitly cloned. Error(Error), } -pub use self::Value::Nil as LuaNil; +pub use self::Value::Nil as Nil; /// Trait for types convertible to `Value`. pub trait ToLua<'a> { @@ -124,10 +124,7 @@ pub trait FromLuaMulti<'a>: Sized { fn from_lua_multi(values: MultiValue<'a>, lua: &'a Lua) -> Result; } -type LuaCallback<'lua> = Box< - FnMut(&'lua Lua, MultiValue<'lua>) -> Result> - + 'lua, ->; +type Callback<'lua> = Box) -> Result> + 'lua>; struct LuaRef<'lua> { lua: &'lua Lua, @@ -755,8 +752,8 @@ pub enum MetaMethod { /// `Index` metamethod is given, it will be called as a *fallback* if the index doesn't match an /// existing regular method. pub struct UserDataMethods<'lua, T> { - methods: HashMap>, - meta_methods: HashMap>, + methods: HashMap>, + meta_methods: HashMap>, _type: PhantomData, } @@ -823,7 +820,7 @@ impl<'lua, T: UserData> UserDataMethods<'lua, T> { self.meta_methods.insert(meta, Box::new(function)); } - fn box_method(mut method: M) -> LuaCallback<'lua> + fn box_method(mut method: M) -> Callback<'lua> where M: 'lua + for<'a> FnMut(&'lua Lua, &'a T, MultiValue<'lua>) -> Result>, { @@ -840,7 +837,7 @@ impl<'lua, T: UserData> UserDataMethods<'lua, T> { } - fn box_method_mut(mut method: M) -> LuaCallback<'lua> + fn box_method_mut(mut method: M) -> Callback<'lua> where M: 'lua + for<'a> FnMut(&'lua Lua, &'a mut T, MultiValue<'lua>) -> Result> { @@ -993,7 +990,7 @@ impl Lua { ffi::lua_newtable(state); push_string(state, "__gc"); - ffi::lua_pushcfunction(state, userdata_destructor::); + ffi::lua_pushcfunction(state, userdata_destructor::); ffi::lua_rawset(state, -3); push_string(state, "__metatable"); @@ -1304,7 +1301,7 @@ impl Lua { T::from_lua_multi(value, self) } - fn create_callback_function<'lua>(&'lua self, func: LuaCallback<'lua>) -> Function<'lua> { + fn create_callback_function<'lua>(&'lua self, func: Callback<'lua>) -> Function<'lua> { unsafe extern "C" fn callback_call_impl(state: *mut ffi::lua_State) -> c_int { callback_error(state, || { let lua = Lua { @@ -1313,7 +1310,7 @@ impl Lua { ephemeral: true, }; - let func = &mut *get_userdata::(state, ffi::lua_upvalueindex(1)); + let func = &mut *get_userdata::(state, ffi::lua_upvalueindex(1)); let nargs = ffi::lua_gettop(state); let mut args = MultiValue::new(); @@ -1336,7 +1333,7 @@ impl Lua { stack_guard(self.state, 0, move || { check_stack(self.state, 2); - push_userdata::(self.state, func); + push_userdata::(self.state, func); ffi::lua_pushlightuserdata( self.state, @@ -1404,7 +1401,7 @@ impl Lua { match ffi::lua_type(state, -1) { ffi::LUA_TNIL => { ffi::lua_pop(state, 1); - LuaNil + Nil } ffi::LUA_TBOOLEAN => { diff --git a/src/multi.rs b/src/multi.rs index 046137f..bca9386 100644 --- a/src/multi.rs +++ b/src/multi.rs @@ -24,7 +24,7 @@ impl<'lua, T: ToLua<'lua>, E: ToLua<'lua>> ToLuaMulti<'lua> for ::std::result::R match self { Ok(v) => result.push_back(v.to_lua(lua)?), Err(e) => { - result.push_back(LuaNil); + result.push_back(Nil); result.push_back(e.to_lua(lua)?); } } @@ -43,7 +43,7 @@ impl<'lua, T: ToLua<'lua>> ToLuaMulti<'lua> for T { impl<'lua, T: FromLua<'lua>> FromLuaMulti<'lua> for T { fn from_lua_multi(mut values: MultiValue<'lua>, lua: &'lua Lua) -> Result { - Ok(T::from_lua(values.pop_front().unwrap_or(LuaNil), lua)?) + Ok(T::from_lua(values.pop_front().unwrap_or(Nil), lua)?) } } @@ -119,7 +119,7 @@ impl<'lua, H: FromLua<'lua>, A, B> FromLuaMulti<'lua> for HCons> where HCons: FromLuaMulti<'lua> { fn from_lua_multi(mut values: MultiValue<'lua>, lua: &'lua Lua) -> Result { - let val = H::from_lua(values.pop_front().unwrap_or(LuaNil), lua)?; + let val = H::from_lua(values.pop_front().unwrap_or(Nil), lua)?; let res = HCons::::from_lua_multi(values, lua)?; Ok(HCons(val, res)) } diff --git a/src/prelude.rs b/src/prelude.rs new file mode 100644 index 0000000..18f80a3 --- /dev/null +++ b/src/prelude.rs @@ -0,0 +1,8 @@ +pub use {Error as LuaError, Result as LuaResult, ExternalError as LuaExternalError, + ExternalResult as LuaExternalResult, Value as LuaValue, Nil as LuaNil, ToLua, FromLua, + MultiValue as LuaMultiValue, ToLuaMulti, FromLuaMulti, Integer as LuaInteger, + Number as LuaNumber, LightUserData as LuaLightUserData, String as LuaString, + Table as LuaTable, TablePairs as LuaTablePairs, TableSequence as LuaTableSequence, + Function as LuaFunction, ThreadStatus as LuaThreadStatus, Thread as LuaThread, + MetaMethod as LuaMetaMethod, UserDataMethods as LuaUserDataMethods, + UserData as LuaUserData, AnyUserData as LuaAnyUserData, Lua}; diff --git a/src/tests.rs b/src/tests.rs index 4b81908..3c5b970 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -5,7 +5,7 @@ use std::os::raw::c_void; use String as LuaString; use { - Lua, Result, LuaExternalError, LightUserData, UserDataMethods, UserData, Table, Thread, + Lua, Result, ExternalError, LightUserData, UserDataMethods, UserData, Table, Thread, ThreadStatus, Error, Function, Value, Variadic, MetaMethod };