Initial
This commit is contained in:
commit
284f099d3e
22 changed files with 1717 additions and 0 deletions
38
src/days/mod.rs
Normal file
38
src/days/mod.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
use anyhow::Result;
|
||||
|
||||
use self::{day01::Day, template::DayTrait};
|
||||
use thiserror::Error;
|
||||
|
||||
pub use template::ResultType;
|
||||
|
||||
mod day01;
|
||||
mod template;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum TemplateError {
|
||||
#[error("Not a valid day number: {0}")]
|
||||
InvalidNumber(usize),
|
||||
}
|
||||
|
||||
pub struct DayProvider {
|
||||
days: Vec<Box<dyn DayTrait>>,
|
||||
}
|
||||
|
||||
impl DayProvider {
|
||||
pub fn create() -> DayProvider {
|
||||
DayProvider {
|
||||
days: vec![Box::new(Day)],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_day(&self, day_num: usize) -> Result<&Box<dyn DayTrait>> {
|
||||
Ok(self
|
||||
.days
|
||||
.get(day_num - 1)
|
||||
.ok_or(TemplateError::InvalidNumber(day_num))?)
|
||||
}
|
||||
|
||||
pub fn get_all_days(&self) -> &[Box<dyn DayTrait>] {
|
||||
&self.days
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue