From d95881c5cf1f37863aa8bb43d54353f5900efca4 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Sun, 3 Dec 2023 12:16:33 +0100 Subject: [PATCH] cleanup --- 2023/day2/Cargo.toml | 1 + 2023/day2/src/main.rs | 10 ++-------- Cargo.lock | 4 ++++ helper/Cargo.toml | 1 + helper/src/lib.rs | 5 +++++ 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/2023/day2/Cargo.toml b/2023/day2/Cargo.toml index a8e693a..d489eaf 100644 --- a/2023/day2/Cargo.toml +++ b/2023/day2/Cargo.toml @@ -7,3 +7,4 @@ edition = "2021" [dependencies] nom.workspace = true +helper.workspace = true diff --git a/2023/day2/src/main.rs b/2023/day2/src/main.rs index e78e7b6..a904488 100644 --- a/2023/day2/src/main.rs +++ b/2023/day2/src/main.rs @@ -1,7 +1,6 @@ use nom::{ branch::alt, bytes::complete::tag, - character::complete::digit1, combinator::{all_consuming, map}, multi::separated_list0, sequence::{preceded, tuple}, @@ -40,16 +39,11 @@ fn parse_line(line: &str) -> (u64, Vec>) { map(tag("green"), |_| Color::Green), ))(i) }; - let parse_cubes = map( - tuple((digit1, preceded(tag(" "), parse_color))), - |(a, c)| (a.parse::().unwrap(), c), - ); + let parse_cubes = tuple((helper::integer, preceded(tag(" "), parse_color))); let parse_round = separated_list0(tag(", "), parse_cubes); let parse_game = separated_list0(tag("; "), parse_round); let parse_line = tuple(( - map(preceded(tag("Game "), digit1), |d: &str| { - d.parse::().unwrap() - }), + preceded(tag("Game "), helper::integer), preceded(tag(": "), parse_game), )); diff --git a/Cargo.lock b/Cargo.lock index c42eddc..c95aa3c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,12 +13,16 @@ dependencies = [ name = "day2" version = "0.1.0" dependencies = [ + "helper", "nom", ] [[package]] name = "helper" version = "0.1.0" +dependencies = [ + "nom", +] [[package]] name = "memchr" diff --git a/helper/Cargo.toml b/helper/Cargo.toml index 0b9c0f0..7b47119 100644 --- a/helper/Cargo.toml +++ b/helper/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +nom.workspace = true diff --git a/helper/src/lib.rs b/helper/src/lib.rs index e69de29..eb075f7 100644 --- a/helper/src/lib.rs +++ b/helper/src/lib.rs @@ -0,0 +1,5 @@ +use nom::{character::complete::digit1, combinator::map, IResult}; + +pub fn integer(input: &str) -> IResult<&str, u64> { + map(digit1, |d: &str| d.parse::().unwrap())(input) +}