diff --git a/src/rcore/inctx.rs b/src/rcore/inctx.rs index 464d6c9..3d2389e 100644 --- a/src/rcore/inctx.rs +++ b/src/rcore/inctx.rs @@ -17,3 +17,17 @@ pub trait InCtx<'a, Ctx: Context<'a>>: Inlining { fn iresolver(&self) -> Rc>; } + +impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for &'c mut dyn DeCtx<'a, Ctx> { + fn icnext_address(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E> { + let (addresses, deserialiser, _) = self.adr(); + match deserialiser.inext_address(addresses, err) { + Ok((address, _)) => Ok((address, self)), + Err(e) => Err(e), + } + } + + fn iresolver(&self) -> Rc> { + self.resolver() + } +} diff --git a/src/rstd/inlining.rs b/src/rstd/inlining.rs index 4df4838..aaf1793 100644 --- a/src/rstd/inlining.rs +++ b/src/rstd/inlining.rs @@ -56,20 +56,6 @@ impl<'a: 'c, 'c, Ctx: Context<'a>> Inlining for &'c mut dyn DeCtx<'a, Ctx> { } } -impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for &'c mut dyn DeCtx<'a, Ctx> { - fn icnext_address(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E> { - let (addresses, deserialiser, _) = self.adr(); - match deserialiser.inext_address(addresses, err) { - Ok((address, _)) => Ok((address, self)), - Err(e) => Err(e), - } - } - - fn iresolver(&self) -> Rc> { - self.resolver() - } -} - pub type ResultDyn = Result<(A, I), Vec>; pub trait InCtxDyn<'a: 'c, 'c, Ctx: Context<'a>>: 'c {