derive_arbitrary/
variant_attributes.rs
1use crate::ARBITRARY_ATTRIBUTE_NAME;
2use syn::*;
3
4pub fn not_skipped(variant: &&Variant) -> bool {
5 !should_skip(variant)
6}
7
8fn should_skip(Variant { attrs, .. }: &Variant) -> bool {
9 attrs
10 .iter()
11 .filter_map(|attr| {
12 attr.path()
13 .is_ident(ARBITRARY_ATTRIBUTE_NAME)
14 .then(|| attr.parse_args::<Meta>())
15 .and_then(Result::ok)
16 })
17 .any(|meta| match meta {
18 Meta::Path(path) => path.is_ident("skip"),
19 _ => false,
20 })
21}