Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. use std::num::ParseIntError;
  2.  
  3. pub enum ParseError {
  4. Invalid,
  5. ParseIntError(ParseIntError),
  6. }
  7.  
  8. impl From<ParseIntError> for ParseError {
  9. fn from(err: ParseIntError) -> Self {
  10. ParseError::ParseIntError(err)
  11. }
  12. }
  13.  
  14. fn parse(s: &str) -> Result<(u32, u32), ParseError> {
  15. let mut parts = s.split(':');
  16.  
  17. let x = parts.next()
  18. .ok_or(ParseError::Invalid)
  19. .and_then(|x| x.parse::<u32>().map_err(From::from) )?;
  20.  
  21. let y = parts.next()
  22. .ok_or(ParseError::Invalid)
  23. .and_then(|x| x.parse::<u32>().map_err(From::from) )?;
  24.  
  25. Ok((x, y))
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement