diff --git a/src/rstd/cast.rs b/src/rstd/cast.rs index 7ad3ede..46fabf6 100644 --- a/src/rstd/cast.rs +++ b/src/rstd/cast.rs @@ -129,16 +129,12 @@ impl<'a, Ctx: CastCtx<'a>> CastResolver<'a, Ctx> { fn map_resolved<'a, Ctx: CastCtx<'a>>( resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>, ) -> HashResolutionResult<'a, Ctx> { - match resolved { - Ok(mentionable) => Ok(( + resolved.map_err(lookup_error::).map(|mentionable| { + ( mentionable.bytes(), CastResolver::rc(mentionable.points_vec()), - )), - Err(error) => Err(match error { - ResolutionError::Lookup(lookup_error) => lookup_error, - ResolutionError::Parse(parse_error) => Ctx::from_cast(CastError::Typeless(parse_error)), - }), - } + ) + }) } impl<'a, Ctx: CastCtx<'a>> Resolver<'a, Ctx> for CastResolver<'a, Ctx> { @@ -178,18 +174,13 @@ fn lookup_error<'a, Ctx: CastCtx<'a>>( } } -fn cast_error<'a, Ctx: CastCtx<'a>, A: Mentionable<'a, Ctx>>( - error: ResolutionFailure<'a, Ctx, TypelessMentionable<'a, Ctx>>, -) -> ResolutionFailure<'a, Ctx, A> { - ResolutionError::Lookup(lookup_error::(error)) -} - fn cast_resolved<'a, Ctx: CastCtx<'a>, A: Mentionable<'a, Ctx>>( resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>, factory: A::Fctr, ) -> ResolutionResult<'a, Ctx, A> { resolved - .map_err(cast_error::)? + .map_err(lookup_error::) + .map_err(ResolutionError::Lookup)? .cast(factory) .map_err(ResolutionError::Parse) .map(Rc::new)