_resolve_origin refactor
This commit is contained in:
parent
8a384caab0
commit
1a57bcd083
@ -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,
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user