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

Function parse_range

validify_derive/src/validate/parser.rs:151–189  ·  view source on GitHub ↗
(meta: &ParseNestedMeta)

Source from the content-addressed store, hash-verified

149}
150
151pub fn parse_range(meta: &ParseNestedMeta) -> Result<Range, syn::Error> {
152 let mut validation = Range::default();
153
154 meta.parse_nested_meta(|meta| {
155 if meta.path.is_ident("min") {
156 let content = meta.value()?;
157 match content.parse::<LitFloat>() {
158 Ok(lit) => validation.min = Some(ValueOrPath::Value(lit.base10_parse::<f64>()?)),
159 Err(_) => match content.parse::<syn::Path>() {
160 Ok(path) => validation.min = Some(ValueOrPath::Path(path)),
161 Err(_) => {
162 return Err(meta.error("Range parameter must be a float literal or path"))
163 }
164 },
165 }
166 return Ok(());
167 }
168
169 if meta.path.is_ident("max") {
170 let content = meta.value()?;
171 match content.parse::<LitFloat>() {
172 Ok(lit) => validation.max = Some(ValueOrPath::Value(lit.base10_parse::<f64>()?)),
173 Err(_) => match content.parse::<syn::Path>() {
174 Ok(path) => validation.max = Some(ValueOrPath::Path(path)),
175 Err(_) => {
176 return Err(meta.error("Range parameter must be a float literal or path"))
177 }
178 },
179 }
180 return Ok(());
181 }
182
183 code_and_message!(validation, meta);
184
185 Err(meta.error("Unrecognized range parameter"))
186 })?;
187
188 Ok(validation)
189}
190
191pub fn parse_contains_full(meta: &ParseNestedMeta, not: bool) -> Result<Contains, syn::Error> {
192 let mut validation = Contains {

Callers 1

parse_single_validationFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected