MCPcopy Create free account
hub / github.com/biblius/validify / collect_validations

Function collect_validations

validify_derive/src/validate/impl.rs:88–124  ·  view source on GitHub ↗
(field: &syn::Field)

Source from the content-addressed store, hash-verified

86}
87
88pub fn collect_validations(field: &syn::Field) -> Vec<Validator> {
89 let mut validators = vec![];
90
91 for attr in field.attrs.iter() {
92 if !attr.path().is_ident(VALIDATE) && !attr.path().is_ident(VALIDIFY) {
93 continue;
94 }
95
96 let syn::Meta::List(ref list) = attr.meta else {
97 let syn::Meta::Path(_) = attr.meta else {
98 abort!(
99 attr.meta.span(),
100 "Validate must be applied as a list, i.e. `validate(/*...*/)` or as a path `validate` for nested validation"
101 )
102 };
103 validators.push(Validator::Nested);
104 continue;
105 };
106
107 list.parse_nested_meta(|meta| {
108 if meta.path.is_ident(ITER) {
109 let mut validators_iter = vec![];
110 meta.parse_nested_meta(|meta| {
111 parse_single_validation(meta, &mut validators_iter)?;
112 Ok(())
113 })?;
114 validators.push(Validator::Iter(validators_iter));
115 } else {
116 parse_single_validation(meta, &mut validators)?;
117 }
118 Ok(())
119 })
120 .unwrap_or_else(|e| abort!(e.span(), e));
121 }
122
123 validators
124}
125
126fn parse_single_validation(
127 meta: ParseNestedMeta<'_>,

Callers 1

collectMethod · 0.85

Calls 1

parse_single_validationFunction · 0.85

Tested by

no test coverage detected