remove InCtxT

This commit is contained in:
AF 2023-06-30 21:17:52 +00:00
parent e31945deda
commit ca48aba4fb

View File

@ -52,35 +52,31 @@ pub trait InCtx<'a, Ctx: Context<'a>>: Inlining {
fn iresolver(&self) -> Rc<dyn Resolver<'a, Ctx>>; fn iresolver(&self) -> Rc<dyn Resolver<'a, Ctx>>;
} }
struct InCtxT<'a: 'c, 'c, Ctx: Context<'a>> { impl<'a: 'c, 'c, Ctx: Context<'a>> Inlining for &'c mut dyn DeCtx<'a, Ctx> {
dectx: &'c mut dyn DeCtx<'a, Ctx>,
}
impl<'a: 'c, 'c, Ctx: Context<'a>> Inlining for InCtxT<'a, 'c, Ctx> {
fn iread_n<A, E>( fn iread_n<A, E>(
self, self,
n: usize, n: usize,
ok: impl FnOnce(&[u8]) -> A, ok: impl FnOnce(&[u8]) -> A,
err: impl FnOnce(&[u8]) -> E, err: impl FnOnce(&[u8]) -> E,
) -> Result<(A, Self), E> { ) -> Result<(A, Self), E> {
match self.dectx.deserializer().iread_n(n, ok, err) { match self.deserializer().iread_n(n, ok, err) {
Ok((a, _)) => Ok((a, self)), Ok((a, _)) => Ok((a, self)),
Err(e) => Err(e), Err(e) => Err(e),
} }
} }
fn iread_all<A>(self, ok: impl FnOnce(&[u8]) -> A) -> A { fn iread_all<A>(self, ok: impl FnOnce(&[u8]) -> A) -> A {
self.dectx.deserializer().iread_all(ok) self.deserializer().iread_all(ok)
} }
fn itell(&self) -> usize { fn itell(&self) -> usize {
self.dectx.tell() self.tell()
} }
} }
impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for InCtxT<'a, 'c, Ctx> { impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for &'c mut dyn DeCtx<'a, Ctx> {
fn icnext_address<E>(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E> { fn icnext_address<E>(self, err: impl FnOnce(&[u8]) -> E) -> Result<(Address, Self), E> {
let (addresses, deserialiser, _) = self.dectx.adr(); let (addresses, deserialiser, _) = self.adr();
match deserialiser.inext_address(addresses, err) { match deserialiser.inext_address(addresses, err) {
Ok((address, _)) => Ok((address, self)), Ok((address, _)) => Ok((address, self)),
Err(e) => Err(e), Err(e) => Err(e),
@ -88,7 +84,7 @@ impl<'a: 'c, 'c, Ctx: Context<'a>> InCtx<'a, Ctx> for InCtxT<'a, 'c, Ctx> {
} }
fn iresolver(&self) -> Rc<dyn Resolver<'a, Ctx>> { fn iresolver(&self) -> Rc<dyn Resolver<'a, Ctx>> {
self.dectx.resolver() self.resolver()
} }
} }