diff --git a/src/rstd/cast.rs b/src/rstd/cast.rs index 7d616d9..7ad3ede 100644 --- a/src/rstd/cast.rs +++ b/src/rstd/cast.rs @@ -188,13 +188,11 @@ 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> { - match resolved { - Ok(typeless_mentionable) => match typeless_mentionable.cast(factory) { - Ok(mentionable) => Ok(Rc::new(mentionable)), - Err(parse_error) => Err(ResolutionError::Parse(parse_error)), - }, - Err(error) => Err(cast_error::(error)), - } + resolved + .map_err(cast_error::)? + .cast(factory) + .map_err(ResolutionError::Parse) + .map(Rc::new) } fn cast_resolve<'a, Ctx: CastCtx<'a>, A: Mentionable<'a, Ctx>>(