use Inject::inject
This commit is contained in:
parent
99b87c2e29
commit
93d42626ae
@ -4,7 +4,7 @@ use crate::func::context::*;
|
|||||||
use crate::rcore::*;
|
use crate::rcore::*;
|
||||||
|
|
||||||
trait Inject<'a, Ctx: Context<'a>>: 'a {
|
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>> {
|
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> {
|
fn resolve(self: Rc<Self>, address: crate::rcore::Address) -> HashResolution<'a, Ctx> {
|
||||||
let inject = self.inject.clone();
|
let inject = self.inject.clone();
|
||||||
Ctx::fmap(
|
Ctx::fmap(
|
||||||
self.resolver.clone().resolve(address),
|
self.inject.inject(self.resolver.clone().resolve(address)),
|
||||||
|resolved| match resolved {
|
|resolved| match resolved {
|
||||||
Ok((source, resolver)) => Ok((
|
Ok((source, resolver)) => Ok((
|
||||||
source,
|
source,
|
||||||
|
Loading…
Reference in New Issue
Block a user