diff --git a/src/rstd/inlining.rs b/src/rstd/inlining.rs index 04b4f3e..7a5af27 100644 --- a/src/rstd/inlining.rs +++ b/src/rstd/inlining.rs @@ -88,6 +88,28 @@ impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for &'c mut dyn DeCtx<'a, Ctx> } } +pub trait InliningDyn: Sized { + fn idread_n(self, n: usize) -> Result<(Vec, Self), Vec>; + + fn idread_all(self) -> Vec; + + fn idtell(&self) -> usize; +} + +impl InliningDyn for I { + fn idread_n(self, n: usize) -> Result<(Vec, Self), Vec> { + self.iread_n(n, |slice| Vec::from(slice), |slice| Vec::from(slice)) + } + + fn idread_all(self) -> Vec { + self.iread_all(|slice| Vec::from(slice)) + } + + fn idtell(&self) -> usize { + self.itell() + } +} + pub type IParseResult<'a, Ctx, F, I> = Result<(Mtbl<'a, Ctx, F>, I), >::ParseError>;