(iter: Iter)
| 29 | } |
| 30 | |
| 31 | fn try_parse(iter: Iter) -> Result<Date, ()> { |
| 32 | let year = token::parse_literal(iter).map_err(drop)?; |
| 33 | token::parse_punct(iter, '-').map_err(drop)?; |
| 34 | let month = token::parse_literal(iter).map_err(drop)?; |
| 35 | token::parse_punct(iter, '-').map_err(drop)?; |
| 36 | let day = token::parse_literal(iter).map_err(drop)?; |
| 37 | |
| 38 | let year = year.to_string().parse::<u64>().map_err(drop)?; |
| 39 | let month = month.to_string().parse::<u64>().map_err(drop)?; |
| 40 | let day = day.to_string().parse::<u64>().map_err(drop)?; |
| 41 | if year >= 3000 || month > 12 || day > 31 { |
| 42 | return Err(()); |
| 43 | } |
| 44 | |
| 45 | Ok(Date { |
| 46 | year: year as u16, |
| 47 | month: month as u8, |
| 48 | day: day as u8, |
| 49 | }) |
| 50 | } |
no test coverage detected