#[macro_export] macro_rules! lua_multi { [] => { $crate::LNil }; [$head: expr] => { $crate::LCons($head, $crate::LNil) }; [$head: expr, $($tail: expr), *] => { $crate::LCons($head, lua_multi![$($tail), *]) }; [$head: expr, $($tail: expr), *,] => { $crate::LCons($head, lua_multi![$($tail), *]) }; } #[macro_export] macro_rules! lua_multi_pat { [] => { $crate::LNil{} }; [$head: pat] => { $crate::LCons($head, $crate::LNil{}) }; [$head: pat, $($tail: pat), *] => { $crate::LCons($head, lua_multi_pat![$($tail), *]) }; [$head: pat, $($tail: pat), *,] => { $crate::LCons($head, lua_multi_pat![$($tail), *]) }; } #[macro_export] macro_rules! LuaMulti { [] => { $crate::LNil }; [$head: ty] => { $crate::LCons<$head, $crate::LNil> }; [$head: ty, $($tail: ty), *] => { $crate::LCons<$head, LuaMulti![$($tail), *]> }; [$head: ty, $($tail: ty), *,] => { $crate::LCons<$head, LuaMulti![$($tail), *]> }; } #[macro_export] macro_rules! lua_cstr { ($s:expr) => ( concat!($s, "\0") as *const str as *const [c_char] as *const c_char ); }