timewarp 0.4.0

NLP library for parsing English and German natural language into dates and times.
Documentation
use self::TimeWarpError::ParseError;
use crate::date_matcher::Rule;
use std::fmt::{Debug, Display, Formatter};
use std::num::ParseIntError;

#[derive(Debug)]
pub enum TimeWarpError {
    ParseError(String),
}

impl From<pest::error::Error<Rule>> for TimeWarpError {
    fn from(value: pest::error::Error<Rule>) -> Self {
        ParseError(value.to_string())
    }
}

impl From<ParseIntError> for TimeWarpError {
    fn from(value: ParseIntError) -> Self {
        ParseError(value.to_string())
    }
}

impl std::error::Error for TimeWarpError {}

impl<T> From<Result<T, TimeWarpError>> for TimeWarpError
where
    T: Debug,
{
    fn from(value: Result<T, TimeWarpError>) -> Self {
        value.unwrap_err()
    }
}

impl Display for TimeWarpError {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match &self {
            ParseError(str) => write!(f, "{str}"),
        }
    }
}

#[inline]
pub fn parse_error<T>(str: impl Into<String>) -> Result<T, TimeWarpError> {
    Err::<T, TimeWarpError>(ParseError(str.into()))
}