From 1ac2906146f8dd7d507e4fee7ec0dd8d1fdead39 Mon Sep 17 00:00:00 2001 From: Ryan Geary Date: Fri, 6 Sep 2019 13:28:06 -0400 Subject: Handle errors in parse_range --- src/main.rs | 27 +++++++++++++++++++++++++-- 1 file 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 { 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)); } -- cgit v1.2.3