use Inject::inject

This commit is contained in:
AF 2023-06-23 12:34:55 +00:00
parent 99b87c2e29
commit 93d42626ae

View File

@ -4,7 +4,7 @@ use crate::func::context::*;
use crate::rcore::*;
trait Inject<'a, Ctx: Context<'a>>: 'a {
fn inject<A: 'a>(fa: Wrapped<'a, Ctx, A>) -> Wrapped<'a, Ctx, A>;
fn inject<A: 'a>(&self, fa: Wrapped<'a, Ctx, A>) -> Wrapped<'a, Ctx, A>;
}
struct InjectedResolver<'a, Ctx: Context<'a>, F: Inject<'a, Ctx>> {
@ -16,7 +16,7 @@ impl<'a, Ctx: Context<'a>, F: Inject<'a, Ctx>> Resolver<'a, Ctx> for InjectedRes
fn resolve(self: Rc<Self>, address: crate::rcore::Address) -> HashResolution<'a, Ctx> {
let inject = self.inject.clone();
Ctx::fmap(
self.resolver.clone().resolve(address),
self.inject.inject(self.resolver.clone().resolve(address)),
|resolved| match resolved {
Ok((source, resolver)) => Ok((
source,