diff --git a/2025/day-01/Cargo.toml b/2025/day-01/Cargo.toml new file mode 100644 index 0000000..2772f63 --- /dev/null +++ b/2025/day-01/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "day-01" +version = "0.1.0" +edition = "2024" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +itertools.workspace = true +nom.workspace = true +tracing.workspace = true +tracing-subscriber.workspace = true +miette.workspace = true +thiserror.workspace = true + +[dev-dependencies] +divan.workspace = true +rstest.workspace = true +test-log.workspace = true + +[[bench]] +name = "day-01-bench" +path = "benches/benchmarks.rs" +harness = false + +[lints] +workspace = true diff --git a/2025/day-01/benches/benchmarks.rs b/2025/day-01/benches/benchmarks.rs new file mode 100644 index 0000000..cfb21dd --- /dev/null +++ b/2025/day-01/benches/benchmarks.rs @@ -0,0 +1,21 @@ +use day_01::*; + +fn main() { + divan::main(); +} + +#[divan::bench] +fn part1() { + part1::process(divan::black_box(include_str!( + "../input1.txt", + ))) + .unwrap(); +} + +#[divan::bench] +fn part2() { + part2::process(divan::black_box(include_str!( + "../input2.txt", + ))) + .unwrap(); +} diff --git a/2025/day-01/src/bin/part1.rs b/2025/day-01/src/bin/part1.rs new file mode 100644 index 0000000..fb3512a --- /dev/null +++ b/2025/day-01/src/bin/part1.rs @@ -0,0 +1,12 @@ +use day_01::part1::process; +use miette::{Context, Result}; + +#[tracing::instrument] +fn main() -> Result<()> { + tracing_subscriber::fmt::init(); + + let file = include_str!("../../input1.txt"); + let result = process(file).context("process part 1")?; + println!("{result}"); + Ok(()) +} diff --git a/2025/day-01/src/bin/part2.rs b/2025/day-01/src/bin/part2.rs new file mode 100644 index 0000000..1364b93 --- /dev/null +++ b/2025/day-01/src/bin/part2.rs @@ -0,0 +1,12 @@ +use day_01::part2::process; +use miette::{Context, Result}; + +#[tracing::instrument] +fn main() -> Result<()> { + tracing_subscriber::fmt::init(); + + let file = include_str!("../../input2.txt"); + let result = process(file).context("process part 2")?; + println!("{result}"); + Ok(()) +} diff --git a/2025/day-01/src/lib.rs b/2025/day-01/src/lib.rs new file mode 100644 index 0000000..faaf542 --- /dev/null +++ b/2025/day-01/src/lib.rs @@ -0,0 +1,2 @@ +pub mod part1; +pub mod part2; diff --git a/2025/day-01/src/part1.rs b/2025/day-01/src/part1.rs new file mode 100644 index 0000000..94144f7 --- /dev/null +++ b/2025/day-01/src/part1.rs @@ -0,0 +1,21 @@ +use miette::Result; + +#[tracing::instrument] +pub fn process(input: &str) -> Result { + todo!("day xx - part 1"); + Ok(0) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_process() -> Result<()> { + let input = ""; + todo!("haven't built test yet"); + let result = 0; + assert_eq!(process(input)?, result); + Ok(()) + } +} diff --git a/2025/day-01/src/part2.rs b/2025/day-01/src/part2.rs new file mode 100644 index 0000000..cbcdee4 --- /dev/null +++ b/2025/day-01/src/part2.rs @@ -0,0 +1,21 @@ +use miette::Result; + +#[tracing::instrument] +pub fn process(input: &str) -> Result { + todo!("day xx - part 2"); + Ok(0) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_process() -> Result<()> { + let input = ""; + todo!("haven't built test yet"); + let result = 0; + assert_eq!(process(input)?, result); + Ok(()) + } +}