Trait advent_of_code_traits::ParseEachInput [−][src]
pub trait ParseEachInput<const Day: u32, const Part: u32> { type Parsed; fn parse_input(input: &str) -> Self::Parsed; }
Implement this trait if you need a different input for each part of a day.
This trait is generic over both day and part.
See also ParseInput
which you should prefer implementing to use the same input type for each part of a day.
Example Usage
use advent_of_code_traits::{days::Day2, Part1, Part2, ParseEachInput}; pub struct AdventOfCode2020; impl ParseEachInput<Day2, Part1> for AdventOfCode2020 { type Parsed = Vec<u32>; fn parse_input(_input: &str) -> Self::Parsed { // parse your input for _part1_ // ... // let's just cheat for demonstration purposes vec![1] } } impl ParseEachInput<Day2, Part2> for AdventOfCode2020 { type Parsed = HashMap<String, u32>; fn parse_input(_input: &str) -> Self::Parsed { // parse your input for _part2_ // ... // let's just cheat for demonstration purposes let mut hashmap = HashMap::new(); hashmap.insert("A".into(), 2); hashmap } } let part1_input = <AdventOfCode2020 as ParseEachInput<Day2, Part1>>::parse_input("input"); let part2_input = <AdventOfCode2020 as ParseEachInput<Day2, Part2>>::parse_input("input"); assert_eq!(vec![1], part1_input); assert_eq!(Some(&2), part2_input.values().next());
Associated Types
type Parsed
[src]
The type that you want your Solution
code to receive for a particular part of a day.
Required methods
fn parse_input(input: &str) -> Self::Parsed
[src]
Implementors
impl<T, const Day: u32> ParseEachInput<Day, Part1> for T where
T: ParseInput<Day>,
[src]
impl<T, const Day: u32> ParseEachInput<Day, Part1> for T where
T: ParseInput<Day>,
[src]impl<T, const Day: u32> ParseEachInput<Day, Part2> for T where
T: ParseInput<Day>,
[src]
impl<T, const Day: u32> ParseEachInput<Day, Part2> for T where
T: ParseInput<Day>,
[src]