Add helper for querying derived traits
diff --git a/syntax/derive.rs b/syntax/derive.rs
index 75fc6b1..4522e68 100644
--- a/syntax/derive.rs
+++ b/syntax/derive.rs
@@ -31,3 +31,7 @@
self.what == *other
}
}
+
+pub fn contains(derives: &[Derive], query: Trait) -> bool {
+ derives.iter().any(|derive| derive.what == query)
+}
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 744963b..bd7efc0 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -3,7 +3,7 @@
pub mod atom;
mod attrs;
pub mod check;
-mod derive;
+pub mod derive;
mod discriminant;
mod doc;
pub mod error;
diff --git a/syntax/types.rs b/syntax/types.rs
index 5fe63ff..c98fe85 100644
--- a/syntax/types.rs
+++ b/syntax/types.rs
@@ -3,8 +3,8 @@
use crate::syntax::report::Errors;
use crate::syntax::set::{OrderedSet as Set, UnorderedSet};
use crate::syntax::{
- toposort, Api, Enum, ExternFn, ExternType, Impl, Pair, ResolvableName, Struct, Trait, Type,
- TypeAlias,
+ derive, toposort, Api, Enum, ExternFn, ExternType, Impl, Pair, ResolvableName, Struct, Trait,
+ Type, TypeAlias,
};
use proc_macro2::Ident;
use quote::ToTokens;
@@ -260,12 +260,7 @@
}
pub fn is_pod(&self, strct: &Struct) -> bool {
- for derive in &strct.derives {
- if derive.what == Trait::Copy {
- return true;
- }
- }
- false
+ derive::contains(&strct.derives, Trait::Copy)
}
// Types that trigger rustc's default #[warn(improper_ctypes)] lint, even if