From f4979b0c8e32678710cbda681c36d5faa94444c1 Mon Sep 17 00:00:00 2001 From: cos Date: Sat, 4 Dec 2021 11:29:30 +0100 Subject: Add some boiler plate generation to init_rust --- bin/init_rust.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/bin/init_rust.sh b/bin/init_rust.sh index 5388a69..681ecf8 100755 --- a/bin/init_rust.sh +++ b/bin/init_rust.sh @@ -20,7 +20,64 @@ cat > 'Cargo.toml' << END_OF_TOML name = "day${DAY}" version = "0.1.0" authors = ["${GIT_USER} <${GIT_EMAIL}>"] -edition = "2018" +edition = "2021" [dependencies] +aoc = { path = "../../../common/rust/aoc" } +anyhow = "1.0" END_OF_TOML + +cat > 'src/main.rs' << END_OF_SRC +use { + anyhow::{ + anyhow, + Context, + Result, + }, + std::{ + env::args, + fs::File, + io::{ + BufRead, + BufReader, + }, + path::Path, + }, +}; + +fn read_input>(filename: T) -> Result> { + let reader = BufReader::new(File::open(filename)?); + + reader.lines().map( + |v| { + let s = v?; + let n = s.parse()?; + Ok(n) + } + ).collect() +} + +fn part1<'a, I: IntoIterator>(input: I) -> Result { + Ok(0) +} + +fn part2<'a, I: IntoIterator>(input: I) -> Result { + Ok(0) +} + +fn main() -> Result<()> { + let ( do_part_1, do_part_2 ) = aoc::do_parts(); + + let filename = args().nth(1).ok_or(anyhow!("Missing input filename"))?; + let input = read_input(filename).context("Could not read input")?; + if do_part_1 { + let solution = part1(&input).context("No solution for part 1")?; + println!("Part1, solution found to be: {}", solution); + } + if do_part_2 { + let solution = part2(&input).context("No solution for part 2")?; + println!("Part2, solution found to be: {}", solution); + } + Ok(()) +} +END_OF_SRC -- cgit v1.2.3