From 8cf8680353d3d29ef9ca4ad2a5c064a3d27d6f2e Mon Sep 17 00:00:00 2001 From: timofey Date: Fri, 30 Jun 2023 21:27:31 +0000 Subject: [PATCH] `InliningDyn` --- src/rstd/inlining.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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>;