@@ -141,10 +141,10 @@ fn gen_decoder(ctx: &Context, variants: &[&Variant], atoms_module_name: &Ident)
141
141
142
142
if let Ok ( unit) = :: rustler:: types:: atom:: Atom :: from_term( term) {
143
143
#( #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) {
145
145
let name = tuple
146
146
. 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( ) )
148
148
. ok_or( :: rustler:: Error :: RaiseAtom ( "invalid_variant" ) ) ?;
149
149
#( #named_unnamed_decoders) *
150
150
}
@@ -208,7 +208,7 @@ fn gen_unnamed_decoder<'a>(
208
208
let i = i + 1 ;
209
209
let ty = & f. ty ;
210
210
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 (
212
212
Box :: new( format!( "Could not decode field on position {}" , #i) )
213
213
) ) ?
214
214
}
@@ -250,7 +250,7 @@ fn gen_named_decoder(
250
250
let enum_name_string = enum_name. to_string ( ) ;
251
251
252
252
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( |_|{
254
254
:: rustler:: Error :: RaiseTerm ( Box :: new( format!(
255
255
"Could not decode field '{}' on Enum '{}'" ,
256
256
#ident_string, #enum_name_string
@@ -267,7 +267,7 @@ fn gen_named_decoder(
267
267
268
268
quote ! {
269
269
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(
271
271
"The second element of the tuple must be a map"
272
272
) ) ) ?;
273
273
#( #assignments) *
@@ -334,7 +334,7 @@ fn gen_named_encoder(
334
334
} => {
335
335
let map = :: rustler:: Term :: map_from_term_arrays( env, & [ #( #keys) , * ] , & [ #( #values) , * ] )
336
336
. 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 ( )
338
338
}
339
339
}
340
340
}
0 commit comments