Improved error casting system

This commit is contained in:
2026-05-16 04:32:19 +02:00
parent b22c0e8527
commit 0c6723e967
13 changed files with 28 additions and 55 deletions
+5 -26
View File
@@ -46,34 +46,13 @@ impl<'a, F> AstError<'a, F> {
}
}
pub trait GetParseError<'a, F> {
fn get<T>(self) -> AstResult<'a, F, T>;
pub trait IntoErr<T> {
fn get(self) -> T;
}
impl<'a, F> GetParseError<'a, F> for AstResult<'a, F> {
fn get<T>(self) -> AstResult<'a, F, T> {
match self {
Ok(v) => Ok(v),
Err(e) => Err(e.get()),
}
}
}
impl<'a, F> GetParseError<'a, Option<F>> for Result<Option<F>, AstError<'a, F>> {
fn get<T>(self) -> AstResult<'a, Option<F>, T> {
match self {
Ok(v) => Ok(v),
Err(e) => Err(e.get()),
}
}
}
impl<'a, F> GetParseError<'a, Option<Vec<F>>> for Result<Option<Vec<F>>, AstError<'a, F>> {
fn get<T>(self) -> AstResult<'a, Option<Vec<F>>, T> {
match self {
Ok(v) => Ok(v),
Err(e) => Err(e.get()),
}
impl<'a, T, TE, TE2> IntoErr<AstResult<'a, T, TE2>> for AstResult<'a, T, TE> {
fn get(self) -> AstResult<'a, T, TE2> {
self.map_err(AstError::get)
}
}