_resolve_origin refactor

This commit is contained in:
AF 2023-05-03 11:00:58 +00:00
parent 8a384caab0
commit 1a57bcd083

View File

@ -29,12 +29,13 @@ fn _resolve_origin<'a, Ctx: 'a + Context, A: Mentionable<'a, Ctx>>(
) -> Resolution<'a, Ctx, A> {
let resolution = origin.r_resolver.clone().resolve(origin.r_address);
Ctx::T::fmap(
move |resolved| match resolved {
Ok((src, resolver)) => match origin.r_factory.parse_slice(&src, resolver) {
Ok(mentionable) => Ok(Rc::new(mentionable)),
Err(parse_error) => Err(ResolutionError::Parse(parse_error)),
},
Err(lookup_error) => Err(ResolutionError::Lookup(lookup_error)),
move |resolved| {
let (src, resolver) = resolved.map_err(ResolutionError::Lookup)?;
let mentionable = origin
.r_factory
.parse_slice(&src, resolver)
.map_err(ResolutionError::Parse)?;
Ok(Rc::new(mentionable))
},
resolution,
)