@@ -141,10 +141,10 @@ fn gen_decoder(ctx: &Context, variants: &[&Variant], atoms_module_name: &Ident)
141141
142142 if let Ok ( unit) = :: rustler:: types:: atom:: Atom :: from_term( term) {
143143 #( #unit_decoders) *
144- } else if let Ok ( tuple) = :: rustler:: types :: tuple :: get_tuple ( term) {
144+ } else if let Ok ( tuple) = :: rustler:: Tuple :: try_from ( term) {
145145 let name = tuple
146146 . get( 0 )
147- . and_then( |& first| :: rustler:: types:: atom:: Atom :: from_term( first) . ok( ) )
147+ . and_then( |first| :: rustler:: types:: atom:: Atom :: from_term( first) . ok( ) )
148148 . ok_or( :: rustler:: Error :: RaiseAtom ( "invalid_variant" ) ) ?;
149149 #( #named_unnamed_decoders) *
150150 }
@@ -208,7 +208,7 @@ fn gen_unnamed_decoder<'a>(
208208 let i = i + 1 ;
209209 let ty = & f. ty ;
210210 quote ! {
211- <#ty as :: rustler:: Decoder >:: decode( tuple[ #i ] ) . map_err( |_| :: rustler:: Error :: RaiseTerm (
211+ <#ty as :: rustler:: Decoder >:: decode( tuple. get ( #i ) . unwrap ( ) ) . map_err( |_| :: rustler:: Error :: RaiseTerm (
212212 Box :: new( format!( "Could not decode field on position {}" , #i) )
213213 ) ) ?
214214 }
@@ -250,7 +250,7 @@ fn gen_named_decoder(
250250 let enum_name_string = enum_name. to_string ( ) ;
251251
252252 let assignment = quote_spanned ! { field. span( ) =>
253- let #variable = try_decode_field( tuple[ 1 ] , #atom_fun( ) ) . map_err( |_|{
253+ let #variable = try_decode_field( tuple. get ( 1 ) . unwrap ( ) , #atom_fun( ) ) . map_err( |_|{
254254 :: rustler:: Error :: RaiseTerm ( Box :: new( format!(
255255 "Could not decode field '{}' on Enum '{}'" ,
256256 #ident_string, #enum_name_string
@@ -267,7 +267,7 @@ fn gen_named_decoder(
267267
268268 quote ! {
269269 if tuple. len( ) == 2 && name == #atom_fn( ) {
270- let len = tuple[ 1 ] . map_size( ) . map_err( |_| :: rustler:: Error :: RaiseTerm ( Box :: new(
270+ let len = tuple. get ( 1 ) . unwrap ( ) . map_size( ) . map_err( |_| :: rustler:: Error :: RaiseTerm ( Box :: new(
271271 "The second element of the tuple must be a map"
272272 ) ) ) ?;
273273 #( #assignments) *
@@ -334,7 +334,7 @@ fn gen_named_encoder(
334334 } => {
335335 let map = :: rustler:: Term :: map_from_term_arrays( env, & [ #( #keys) , * ] , & [ #( #values) , * ] )
336336 . expect( "Failed to create map" ) ;
337- :: rustler :: types :: tuple :: make_tuple( env , & [ :: rustler:: Encoder :: encode( & #atom_fn( ) , env) , map] )
337+ env . make_tuple( & [ :: rustler:: Encoder :: encode( & #atom_fn( ) , env) , map] ) . into ( )
338338 }
339339 }
340340}
0 commit comments