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}