This is the main.rs btw
||
use std::{collections::HashMap, io::Write, process::ExitCode};
mod one;
mod two;
mod three;
...
fn main() -> ExitCode {
let stdin = std::io::stdin();
let mut challenge = String::with_capacity(5);
print!("Challenge >> ");
std::io::stdout().flush().unwrap();
let readresult = stdin.read_line(&mut challenge);
match readresult {
Ok(_) => (),
Err(err) => {
println!("Userinput Error: {}", err);
return ExitCode::FAILURE;
}
}
challenge.pop();
let mut input: String;
let inputresult = std::fs::read_to_string(std::format!("./inputs/{}.txt", challenge.chars().nth(0).unwrap()));
match inputresult {
Ok(ok) => {
input = ok;
}
Err(err) => {
println!("File Error: {}", err);
return ExitCode::FAILURE;
}
}
let mut functions = HashMap::<&str, Box<dyn Fn(& mut String) -> String>>::with_capacity(50);
functions.insert("1.1", Box::new(one::first));
functions.insert("1.2", Box::new(one::second));
functions.insert("2.1", Box::new(two::first));
functions.insert("2.2", Box::new(two::second));
functions.insert("3.1", Box::new(three::first));
functions.insert("3.2", Box::new(three::second));
...
let functionoption = functions.get(&challenge.as_str());
let function;
match functionoption {
Some(func) =>{
function = func;
}
None => {
println!("Lookup Error: {} not found", input);
return ExitCode::FAILURE;
}
}
let result = function(&mut input);
println!("{}", result);
return ExitCode::SUCCESS;
}
||
