1
0
mirror of https://github.com/chylex/Advent-of-Code.git synced 2025-06-09 08:34:04 +02:00
Advent-of-Code/2020/utils/mod.rs
2022-02-23 02:15:13 +01:00

35 lines
920 B
Rust

use std::error::Error;
use std::fmt::{Display, Formatter};
use std::fs::File;
use std::io;
use std::io::{BufRead, BufReader};
use std::str::FromStr;
pub fn read_input_lines() -> Result<Vec<String>, io::Error> {
let file = File::open("input/1.txt")?;
return BufReader::new(file).lines().collect();
}
pub fn parse_input_lines<T : FromStr>() -> Result<Vec<T>, Box<dyn Error>> where <T as FromStr>::Err : Into<Box<dyn Error>> {
return read_input_lines()?.iter().map(|line| line.parse::<T>()).collect::<Result<Vec<T>, T::Err>>().map_err(Into::into);
}
#[derive(Debug)]
pub struct GenericError<'a> {
pub message: &'a str
}
impl<'a> GenericError<'a> {
pub fn new(message: &'a str) -> GenericError<'a> {
GenericError { message }
}
}
impl Display for GenericError<'_> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Parse error: {}", self.message)
}
}
impl Error for GenericError<'_> {}