(meta: &ParseNestedMeta)
| 149 | } |
| 150 | |
| 151 | pub 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 | |
| 191 | pub fn parse_contains_full(meta: &ParseNestedMeta, not: bool) -> Result<Contains, syn::Error> { |
| 192 | let mut validation = Contains { |
no outgoing calls
no test coverage detected