use crate::rstd::inject::*;
use super::*;
struct TracedInject;
impl<'a, Ctx: Context<'a, _Tm = TracedInstance>> Inject<'a, Ctx> for TracedInject {
fn inject<A: 'a + Send>(&self, fa: Wrapped<'a, Ctx, A>) -> Wrapped<'a, Ctx, A> {
fa.after_resolution()
}
}
pub trait Traceable<'a, Ctx: Context<'a, _Tm = TracedInstance>>:
Mentionable<'a, Ctx> + Sized
{
fn trace(&self) -> ParseResultA<'a, Self> {
Arc::new(TracedInject).inject_mentionable(self)
}
}
impl<'a, Ctx: Context<'a, _Tm = TracedInstance>, A: Mentionable<'a, Ctx>> Traceable<'a, Ctx> for A {}