@@ -17,7 +17,7 @@ pub enum LuaMessage {
1717 Boolean ( bool ) ,
1818 Nil ,
1919 Table ( HashMap < String , LuaMessage > ) ,
20- Array ( Vec < LuaMessage > ) ,
20+ Array ( VecDeque < LuaMessage > ) ,
2121 Variadic ( VariadicLuaMessage ) ,
2222}
2323
@@ -310,12 +310,12 @@ impl From<LuaMessage> for Option<HashMap<String, LuaMessage>> {
310310}
311311impl From < Vec < LuaMessage > > for LuaMessage {
312312 fn from ( s : Vec < LuaMessage > ) -> Self {
313- LuaMessage :: Array ( s )
313+ LuaMessage :: Array ( VecDeque :: from ( s ) )
314314 }
315315}
316316impl FromIterator < LuaMessage > for LuaMessage {
317317 fn from_iter < I : IntoIterator < Item = LuaMessage > > ( iter : I ) -> Self {
318- LuaMessage :: Array ( Vec :: < LuaMessage > :: from_iter ( iter) )
318+ LuaMessage :: Array ( VecDeque :: < LuaMessage > :: from_iter ( iter) )
319319 }
320320}
321321/*
@@ -341,7 +341,7 @@ impl From<LuaMessage> for Option<Vec<LuaMessage>> {
341341 }
342342 Some ( new_one)
343343 }
344- LuaMessage :: Array ( _h) => Some ( _h) ,
344+ LuaMessage :: Array ( _h) => Some ( _h. into ( ) ) ,
345345 LuaMessage :: Variadic ( _h) => Some ( _h. 0 . into ( ) ) ,
346346 }
347347 }
@@ -374,7 +374,10 @@ impl<'lua> FromLua<'lua> for LuaMessage {
374374 && t. clone ( ) . pairs :: < i32 , LuaMessage > ( ) . count ( )
375375 == t. clone ( ) . sequence_values :: < LuaMessage > ( ) . count ( )
376376 {
377- Ok ( LuaMessage :: Array ( Vec :: from_lua ( Value :: Table ( t) , lua) ?) )
377+ Ok ( LuaMessage :: Array ( VecDeque :: from ( Vec :: from_lua (
378+ Value :: Table ( t) ,
379+ lua,
380+ ) ?) ) )
378381 } else {
379382 Ok ( LuaMessage :: Table ( HashMap :: from_lua ( Value :: Table ( t) , lua) ?) )
380383 }
@@ -497,22 +500,47 @@ macro_rules! impl_tuple {
497500 MultiLuaMessage :: from_iter( [ ] )
498501 }
499502 }
503+ impl Into <LuaMessage > for ( ) {
504+ fn into( self ) -> LuaMessage {
505+ LuaMessage :: from_iter( [ ] )
506+ }
507+ }
500508 ) ;
501509
502510 ( $last: ident $( $name: ident) * ) => (
503511 impl <$( $name, ) * $last> Into <MultiLuaMessage > for ( $( $name, ) * $last, )
504512 where $( $name: Into <LuaMessage >, ) *
505513 $last: Into <MultiLuaMessage >
506514 {
507- #[ allow( unused_mut) ]
508- #[ allow( unused_variables) ]
509515 #[ allow( non_snake_case) ]
510516 fn into( self ) -> MultiLuaMessage {
511517 let ( $( $name, ) * $last, ) = self ;
512518
513- let mut results = $last. into( ) ;
514- push_reverse!( results, $( $name. into( ) , ) * ) ;
515- results
519+ let mut v = MultiLuaMessage :: from_iter( [ ] ) ;
520+ let lastOne = $last. into( ) . 0 ;
521+ v. push_front( lastOne) ;
522+ push_reverse!( v, $( $name. into( ) , ) * ) ;
523+
524+ // println!("{:?}", v);
525+ v
526+ }
527+ }
528+ impl <$( $name, ) * $last> From <( $( $name, ) * $last, ) > for LuaMessage
529+ where $( $name: Into <LuaMessage >, ) *
530+ $last: Into <LuaMessage >
531+ {
532+ #[ allow( non_snake_case) ]
533+ fn from( s: ( $( $name, ) * $last, ) ) -> LuaMessage {
534+ let ( $( $name, ) * $last, ) = s;
535+
536+ let last_instance = $last. into( ) ;
537+
538+ let mut v = VecDeque :: <LuaMessage >:: from_iter( [ ] ) ;
539+ v. push_front( last_instance) ;
540+ push_reverse!( v, $( $name. into( ) , ) * ) ;
541+
542+ // println!("{:?}", v);
543+ LuaMessage :: Array ( v)
516544 }
517545 }
518546 ) ;
@@ -661,7 +689,7 @@ mod tests {
661689 )
662690 . unwrap( )
663691 ) ,
664- discriminant( & LuaMessage :: Array ( t. clone( ) ) )
692+ discriminant( & LuaMessage :: Array ( VecDeque :: from ( t. clone( ) ) ) )
665693 ) ;
666694
667695 // println!("{:?}\n{:?}", LuaMessage::Array(t.clone()), LuaMessage::from_lua(
0 commit comments