diff --git a/day10/src/main.rs b/day10/src/main.rs index ef65e00..eca3d1f 100644 --- a/day10/src/main.rs +++ b/day10/src/main.rs @@ -1,3 +1,4 @@ +use std::num; use std::env; use std::process; use std::fs::File; @@ -11,14 +12,16 @@ enum Inst{ #[derive(Debug)] struct ParseError(String); +impl From for ParseError { + fn from(e: num::ParseIntError) -> Self { + ParseError(e.to_string()) + } +} fn parse_line(line: String) -> Result { match &line[..4] { "noop" => Ok(Inst::Noop), - "addx" => match line[5..].parse::() { - Ok(operand) => Ok(Inst::AddX(operand)), - Err(e) => Err(ParseError(e.to_string())), - }, + "addx" => Ok(Inst::AddX(line[5..].parse::()?)), _ => Err(ParseError(String::from("bad instruction"))), } }