diff options
author | Ryan Geary <rtgnj42@gmail.com> | 2019-09-06 13:28:06 -0400 |
---|---|---|
committer | Ryan Geary <rtgnj42@gmail.com> | 2019-09-06 13:28:06 -0400 |
commit | 1ac2906146f8dd7d507e4fee7ec0dd8d1fdead39 (patch) | |
tree | da4aa127d6172eed1ba43fa5048776ae7271dd4a | |
parent | 46d79d72509c328bd71b6be1a33d05aa0b005d22 (diff) |
Handle errors in parse_range
-rw-r--r-- | src/main.rs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 87ba4d2..04ca0a1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,6 +55,29 @@ fn main() { fn parse_range(src: &str) -> Result<Range, ParseIntError> { let re = Regex::new(r"^(\d*):(\d*)$").unwrap(); - let cap = re.captures_iter(src).next().unwrap(); - return Ok((Some(cap[1].parse()?), Some(cap[2].parse()?))); + + let cap = match re.captures_iter(src).next() { + Some(v) => v, + None => panic!("failed to parse range argument: {}", src), + }; + + let start = if cap[1].is_empty() { + None + } else { + match cap[1].parse() { + Ok(x) => Some(x), + Err(e) => panic!("failed to get range argument: {:?}", e), + } + }; + + let end = if cap[2].is_empty() { + None + } else { + match cap[2].parse() { + Ok(x) => Some(x), + Err(e) => panic!("failed to get range argument: {:?}", e), + } + }; + + return Ok((start, end)); } |