X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=c-bindings-gen%2Fsrc%2Ftypes.rs;h=598552102f3691ba9f50839ad1e6cda673700e54;hb=2951949623b40708f0c56784a5bd270993da7e31;hp=2ea9221a63f6a6a22a76c01b93e9a0d29ae92db3;hpb=2e91e812f6172965fed6fed63dc3adf9883aec56;p=ldk-c-bindings diff --git a/c-bindings-gen/src/types.rs b/c-bindings-gen/src/types.rs index 2ea9221..5985521 100644 --- a/c-bindings-gen/src/types.rs +++ b/c-bindings-gen/src/types.rs @@ -283,14 +283,16 @@ impl<'a, 'p: 'a> GenericTypes<'a, 'p> { non_lifetimes_processed = true; assert_simple_bound(&trait_bound); let resolved = types.resolve_path(&trait_bound.path, None); - let ref_ty = syn::Type::Reference(syn::TypeReference { - and_token: syn::Token![&](Span::call_site()), - lifetime: None, mutability: None, - elem: Box::new(syn::Type::Path(syn::TypePath { - qself: None, path: string_path_to_syn_path(&resolved) - })), + let ty = syn::Type::Path(syn::TypePath { + qself: None, path: string_path_to_syn_path(&resolved) }); - self.default_generics.insert(p_ident, (ref_ty.clone(), ref_ty)); + let ref_ty = parse_quote!(&#ty); + if types.crate_types.traits.get(&resolved).is_some() { + self.default_generics.insert(p_ident, (ty, ref_ty)); + } else { + self.default_generics.insert(p_ident, (ref_ty.clone(), ref_ty)); + } + *gen = Some(resolved); } }