refactor cast
This commit is contained in:
parent
8db631f87e
commit
1a8d70957b
@ -129,16 +129,12 @@ impl<'a, Ctx: CastCtx<'a>> CastResolver<'a, Ctx> {
|
|||||||
fn map_resolved<'a, Ctx: CastCtx<'a>>(
|
fn map_resolved<'a, Ctx: CastCtx<'a>>(
|
||||||
resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>,
|
resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>,
|
||||||
) -> HashResolutionResult<'a, Ctx> {
|
) -> HashResolutionResult<'a, Ctx> {
|
||||||
match resolved {
|
resolved.map_err(lookup_error::<Ctx>).map(|mentionable| {
|
||||||
Ok(mentionable) => Ok((
|
(
|
||||||
mentionable.bytes(),
|
mentionable.bytes(),
|
||||||
CastResolver::rc(mentionable.points_vec()),
|
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> {
|
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::<Ctx>(error))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn cast_resolved<'a, Ctx: CastCtx<'a>, A: Mentionable<'a, Ctx>>(
|
fn cast_resolved<'a, Ctx: CastCtx<'a>, A: Mentionable<'a, Ctx>>(
|
||||||
resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>,
|
resolved: ResolutionResult<'a, Ctx, TypelessMentionable<'a, Ctx>>,
|
||||||
factory: A::Fctr,
|
factory: A::Fctr,
|
||||||
) -> ResolutionResult<'a, Ctx, A> {
|
) -> ResolutionResult<'a, Ctx, A> {
|
||||||
resolved
|
resolved
|
||||||
.map_err(cast_error::<Ctx, A>)?
|
.map_err(lookup_error::<Ctx>)
|
||||||
|
.map_err(ResolutionError::Lookup)?
|
||||||
.cast(factory)
|
.cast(factory)
|
||||||
.map_err(ResolutionError::Parse)
|
.map_err(ResolutionError::Parse)
|
||||||
.map(Rc::new)
|
.map(Rc::new)
|
||||||
|
Loading…
Reference in New Issue
Block a user