From f8a8620aff7b155eec22eb70e2dbf99c868481a3 Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 1 Jul 2023 14:24:11 +0000 Subject: [PATCH] `Inlining` for `Demoted` --- src/rcore/demoted.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/rcore/demoted.rs b/src/rcore/demoted.rs index 2d80e7e..dd2f941 100644 --- a/src/rcore/demoted.rs +++ b/src/rcore/demoted.rs @@ -1,3 +1,23 @@ use super::*; pub struct Demoted<'a: 'c, 'c, Ctx: Context<'a>>(pub(super) &'c mut dyn DeCtx<'a, Ctx>); + +impl<'a: 'c, 'c, Ctx: Context<'a>> Inlining for Demoted<'a, 'c, Ctx> { + fn iread_n( + self, + n: usize, + ok: impl FnOnce(&[u8]) -> A, + err: impl FnOnce(&[u8]) -> E, + ) -> Result<(A, Self), E> { + let (a, dectx) = self.0.iread_n(n, ok, err)?; + Ok((a, Self(dectx))) + } + + fn iread_all(self, ok: impl FnOnce(&[u8]) -> A) -> A { + self.0.iread_all(ok) + } + + fn itell(&self) -> usize { + self.0.itell() + } +}