Expand description
§Adventurous
Adventurous is a companion crate to assist you in solving Advent of Code puzzles.
§Installation
[dependencies]
adventurous = "0.3.0"§Examples
§Solving a puzzle
use adventurous::Input;
use anyhow::Result;
#[adventurous::part_one]
fn part_one(input: &Input) -> Result<usize> {
    Ok(input
        .traverse(|line| {
            // Do something with the line...
            line.parse::<usize>()
        })?
        .sum())
}
#[adventurous::part_two]
fn part_two(_input: &Input) -> Result<usize> {
    todo!()
}
fn main() -> Result<()> {
    adventurous::run("input.txt", part_one, part_two)
}§Regression testing
Once a solution has been solved, you can provide the correct answer for each part using the #[part_one] and #[part_two] attributes.
Calling test_solutions!() inside of your tests module will generate regression tests that ensure the output from your solvers matches the correct answer.
use adventurous::Input;
use anyhow::Result;
#[adventurous::part_one(answer = "73")]
fn part_one(input: &Input) -> Result<usize> {
    Ok(input
        .traverse(|line| {
            // Do something with the line...
            line.parse::<usize>()
        })?
        .sum())
}
#[cfg(test)]
mod tests {
    use super::*;
    adventurous::test_solutions!();
}Modules§
Macros§
- test_solutions 
- Emits test cases to test the solutions to the puzzle.
Structs§
- Input
- The input for an Advent of Code puzzle.
Traits§
- CharCounts 
- A trait for counting the number of occurrences of each character in a string.
- Solve
- A trait for solving an Advent of Code puzzle.
Functions§
- manhattan_distance 
- Returns the Manhattan distance between two points.
- run
- Runs the provided solvers against the puzzle input.