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