diff --git a/src/testing/counted.rs b/src/testing/counted.rs
index cb5f57c..ae0d93c 100644
--- a/src/testing/counted.rs
+++ b/src/testing/counted.rs
@@ -3,6 +3,7 @@ use std::cmp::max;
use crate::func::{context::*, *};
use crate::rcore::*;
+use super::inject::*;
use super::*;
pub struct TestContextCounted;
@@ -56,36 +57,20 @@ impl Counted {
}
}
-struct CountedResolver<'a> {
- resolver: Rc>,
-}
+struct CountedInject;
-impl<'a> CountedResolver<'a> {
- fn new(
- resolver: Rc>,
- ) -> Rc> {
- Rc::new(Self { resolver })
- }
-}
-
-impl<'a> Resolver<'a, TestContextCounted> for CountedResolver<'a> {
- fn resolve(self: Rc, address: Address) -> HashResolution<'a, TestContextCounted> {
- self.resolver
- .clone()
- .resolve_map(address, |resolved| {
- let (src, resolver) = resolved?;
- let delayed: Rc> =
- Rc::new(CountedResolver { resolver });
- Ok((src, delayed))
- })
- .add(1)
+impl<'a> Inject<'a, TestContextCounted> for CountedInject {
+ fn inject(
+ &self,
+ fa: Wrapped<'a, TestContextCounted, A>,
+ ) -> Wrapped<'a, TestContextCounted, A> {
+ fa.add(1)
}
}
pub trait Delayable<'a>: Mentionable<'a, TestContextCounted> + Sized {
- fn delay(self: Rc) -> ParseResultA<'a, TestContextCounted, Self> {
- let factory = self.factory();
- TypelessMentionable::from_typed(self).cast_full(factory, CountedResolver::new)
+ fn delay(&self) -> ParseResultA<'a, TestContextCounted, Self> {
+ Rc::new(CountedInject).inject_mentionable(self)
}
}