diff --git a/src/bindgen/ir/annotation.rs b/src/bindgen/ir/annotation.rs index ca90a15e..ec0c6e79 100644 --- a/src/bindgen/ir/annotation.rs +++ b/src/bindgen/ir/annotation.rs @@ -113,7 +113,7 @@ impl AnnotationSet { }) .collect(); - let must_use = attrs.has_attr_word("must_use"); + let must_use = attrs.has_attr_word("must_use") || attrs.has_attr_namevalue("must_use"); let deprecated = attrs.find_deprecated_note(); let mut annotations = HashMap::new(); diff --git a/src/bindgen/utilities.rs b/src/bindgen/utilities.rs index f4058313..8f0763b8 100644 --- a/src/bindgen/utilities.rs +++ b/src/bindgen/utilities.rs @@ -149,6 +149,19 @@ pub trait SynAttributeHelpers { }) } + /// Searches for attributes like `#[test = "..."]`. + /// Example: + /// - `item.has_attr_namevalue("test")` => `#[test = "..."]` + fn has_attr_namevalue(&self, name: &str) -> bool { + self.attrs().iter().any(|attr| { + if let syn::Meta::NameValue(nv) = &attr.meta { + nv.path.is_ident(name) + } else { + false + } + }) + } + /// Searches for attributes like `#[unsafe(test)]`. /// Example: /// - `item.has_unsafe_attr_word("test")` => `#[unsafe(test)]`