| 1304 | } |
| 1305 | |
| 1306 | fn parse_datum(&mut self, input: ParseStream) -> syn::Result<()> { |
| 1307 | if input.eat(kw::null) { |
| 1308 | self.0.push(Datum::Null) |
| 1309 | } else { |
| 1310 | match input.parse::<syn::Lit>()? { |
| 1311 | syn::Lit::Str(l) => self.0.push(Datum::from(l.value().as_str())), |
| 1312 | syn::Lit::Int(l) => self.0.push(Datum::from(l.base10_parse::<i64>()?)), |
| 1313 | syn::Lit::Float(l) => self.0.push(Datum::from(l.base10_parse::<f64>()?)), |
| 1314 | syn::Lit::Bool(l) => self.0.push(Datum::from(l.value)), |
| 1315 | _ => Err(Error::new(input.span(), "cannot parse literal"))?, |
| 1316 | } |
| 1317 | } |
| 1318 | Ok(()) |
| 1319 | } |
| 1320 | } |
| 1321 | } |
| 1322 | |