From 77ade5b28a721d7506c9ee45414d27da33c09951 Mon Sep 17 00:00:00 2001 From: Seokmin Hong Date: Thu, 2 Jun 2022 10:58:23 +0900 Subject: [PATCH] Fix moving out terms --- rustler_codegen/src/ex_struct.rs | 2 +- rustler_codegen/src/map.rs | 4 ++-- rustler_codegen/src/tagged_enum.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rustler_codegen/src/ex_struct.rs b/rustler_codegen/src/ex_struct.rs index 1ed93bd5..f9a394ce 100644 --- a/rustler_codegen/src/ex_struct.rs +++ b/rustler_codegen/src/ex_struct.rs @@ -108,7 +108,7 @@ fn gen_decoder(ctx: &Context, fields: &[&Field], atoms_module_name: &Ident) -> T T: rustler::Decoder<'a>, { use rustler::Encoder; - match ::rustler::Decoder::decode(term.map_get(field)?) { + match ::rustler::Decoder::decode(term.map_get(&field)?) { Err(_) => Err(::rustler::Error::RaiseTerm(Box::new(format!( "Could not decode field :{:?} on %{}{{}}", field, #struct_name_str diff --git a/rustler_codegen/src/map.rs b/rustler_codegen/src/map.rs index ed35cf78..695085fe 100644 --- a/rustler_codegen/src/map.rs +++ b/rustler_codegen/src/map.rs @@ -89,7 +89,7 @@ fn gen_decoder(ctx: &Context, fields: &[&Field], atoms_module_name: &Ident) -> T T: rustler::Decoder<'a>, { use rustler::Encoder; - match ::rustler::Decoder::decode(term.map_get(field)?) { + match ::rustler::Decoder::decode(term.map_get(&field)?) { Err(_) => Err(::rustler::Error::RaiseTerm(Box::new(format!( "Could not decode field :{:?} on %{{}}", field @@ -118,7 +118,7 @@ fn gen_encoder(ctx: &Context, fields: &[&Field], atoms_module_name: &Ident) -> T let atom_fun = Context::field_to_atom_fun(field); quote_spanned! { field.span() => - map = map.map_put(#atom_fun(), self.#field_ident).unwrap(); + map = map.map_put(#atom_fun(), &self.#field_ident).unwrap(); } }) .collect(); diff --git a/rustler_codegen/src/tagged_enum.rs b/rustler_codegen/src/tagged_enum.rs index f0405273..c3caac55 100644 --- a/rustler_codegen/src/tagged_enum.rs +++ b/rustler_codegen/src/tagged_enum.rs @@ -117,7 +117,7 @@ fn gen_decoder(ctx: &Context, variants: &[&Variant], atoms_module_name: &Ident) T: ::rustler::Decoder<'a>, { use ::rustler::Encoder; - match ::rustler::Decoder::decode(term.map_get(field)?) { + match ::rustler::Decoder::decode(term.map_get(&field)?) { Err(_) => Err(::rustler::Error::RaiseTerm(Box::new(format!( "Could not decode field :{:?} on %{{}}", field