InlineableDeCtx: InlineableDeserializer

This commit is contained in:
AF 2023-06-28 16:16:13 +00:00
parent 5baf4bf4ad
commit c48dee1fe3

View File

@ -46,24 +46,13 @@ impl<D: ?Sized + Deserializer> InlineableDeserializer for &mut D {
}
}
pub trait InlineableDeCtx<'a, Ctx: Context<'a>>: Sized {
type D: InlineableDeserializer;
fn iread_n<A, E>(
self,
n: usize,
ok: impl FnOnce(&[u8]) -> A,
err: impl FnOnce(&[u8]) -> E,
) -> Result<(A, Self), E>;
}
pub trait InlineableDeCtx<'a, Ctx: Context<'a>>: InlineableDeserializer {}
struct InlineableDeCtxT<'a: 'c, 'c, Ctx: Context<'a>> {
dectx: &'c mut dyn DeCtx<'a, Ctx>,
}
impl<'a: 'c, 'c, Ctx: Context<'a>> InlineableDeCtx<'a, Ctx> for InlineableDeCtxT<'a, 'c, Ctx> {
type D = &'c mut dyn Deserializer;
impl<'a: 'c, 'c, Ctx: Context<'a>> InlineableDeserializer for InlineableDeCtxT<'a, 'c, Ctx> {
fn iread_n<A, E>(
self,
n: usize,
@ -77,6 +66,8 @@ impl<'a: 'c, 'c, Ctx: Context<'a>> InlineableDeCtx<'a, Ctx> for InlineableDeCtxT
}
}
impl<'a: 'c, 'c, Ctx: Context<'a>> InlineableDeCtx<'a, Ctx> for InlineableDeCtxT<'a, 'c, Ctx> {}
pub type IParseResult<'a, Ctx, F, I> =
Result<(Mtbl<'a, Ctx, F>, I), <F as Factory<'a, Ctx>>::ParseError>;