From: Matt Corallo Date: Fri, 11 Jun 2021 17:35:45 +0000 (+0000) Subject: Drop spurious deref when converting Vec entries to C X-Git-Tag: v0.0.98^2~5 X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=commitdiff_plain;h=db00d1567e95bbb3b4615966c3dfdb398899973a Drop spurious deref when converting Vec entries to C --- diff --git a/c-bindings-gen/src/types.rs b/c-bindings-gen/src/types.rs index c21572f..ff1d4b8 100644 --- a/c-bindings-gen/src/types.rs +++ b/c-bindings-gen/src/types.rs @@ -1290,16 +1290,15 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> { (").into(), Err(mut e) => crate::c_types::CResultTempl::err(".to_string(), "e".to_string())], ").into() }", ContainerPrefixLocation::PerConv)) }, - "Vec" if !is_ref => { - Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv)) - }, "Vec" => { - // We should only get here if the single contained has an inner - assert!(self.c_type_has_inner(single_contained.unwrap())); - Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "*item".to_string())], "); }", ContainerPrefixLocation::PerConv)) + if is_ref { + // We should only get here if the single contained has an inner + assert!(self.c_type_has_inner(single_contained.unwrap())); + } + Some(("Vec::new(); for mut item in ", vec![(format!(".drain(..) {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv)) }, "Slice" => { - Some(("Vec::new(); for item in ", vec![(format!(".iter() {{ local_{}.push(", var_name), "*item".to_string())], "); }", ContainerPrefixLocation::PerConv)) + Some(("Vec::new(); for item in ", vec![(format!(".iter() {{ local_{}.push(", var_name), "item".to_string())], "); }", ContainerPrefixLocation::PerConv)) }, "Option" => { let contained_struct = if let Some(syn::Type::Path(p)) = single_contained {