From 1afc4ccc5073ab6dd99def164c9891a733c11688 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 28 Sep 2023 00:32:55 +0000 Subject: [PATCH] Accept `DerefMut` bounds on generics as if they were `Deref` --- c-bindings-gen/src/types.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/c-bindings-gen/src/types.rs b/c-bindings-gen/src/types.rs index 99b333c..4328e9c 100644 --- a/c-bindings-gen/src/types.rs +++ b/c-bindings-gen/src/types.rs @@ -225,7 +225,8 @@ impl<'a, 'p: 'a> GenericTypes<'a, 'p> { if path == "Sized" { continue; } if non_lifetimes_processed { return false; } non_lifetimes_processed = true; - if path != "std::ops::Deref" && path != "core::ops::Deref" { + if path != "std::ops::Deref" && path != "core::ops::Deref" && + path != "std::ops::DerefMut" && path != "core::ops::DerefMut" { let p = string_path_to_syn_path(&path); let ref_ty = parse_quote!(&#p); let mut_ref_ty = parse_quote!(&mut #p); @@ -347,7 +348,8 @@ impl<'a, 'p: 'a> GenericTypes<'a, 'p> { // implement Deref for relevant types). We don't // bother to implement it for associated types, however, so we just // ignore such bounds. - if path != "std::ops::Deref" && path != "core::ops::Deref" { + if path != "std::ops::Deref" && path != "core::ops::Deref" && + path != "std::ops::DerefMut" && path != "core::ops::DerefMut" { self.typed_generics.insert(&t.ident, path); } } else { unimplemented!(); } -- 2.30.2