move Inlining for Deserializer to rcore

This commit is contained in:
AF 2023-06-30 22:17:34 +00:00
parent 702bff3276
commit 23cc08ddf5
2 changed files with 26 additions and 24 deletions

View File

@ -1,3 +1,5 @@
use super::*;
pub trait Inlining: Sized { pub trait Inlining: Sized {
fn iread_n<A, E>( fn iread_n<A, E>(
self, self,
@ -25,3 +27,27 @@ pub trait InliningExt<E>: Inlining {
} }
impl<D: Inlining, E> InliningExt<E> for D {} impl<D: Inlining, E> InliningExt<E> for D {}
impl<D: ?Sized + Deserializer> Inlining for &mut D {
fn iread_n<A, E>(
self,
n: usize,
ok: impl FnOnce(&[u8]) -> A,
err: impl FnOnce(&[u8]) -> E,
) -> Result<(A, Self), E> {
let slice = self.read_n(n);
if slice.len() == n {
Ok((ok(slice), self))
} else {
Err(err(slice))
}
}
fn iread_all<A>(self, ok: impl FnOnce(&[u8]) -> A) -> A {
ok(self.read_all())
}
fn itell(&self) -> usize {
self.tell()
}
}

View File

@ -10,30 +10,6 @@ use super::{
*, *,
}; };
impl<D: ?Sized + Deserializer> Inlining for &mut D {
fn iread_n<A, E>(
self,
n: usize,
ok: impl FnOnce(&[u8]) -> A,
err: impl FnOnce(&[u8]) -> E,
) -> Result<(A, Self), E> {
let slice = self.read_n(n);
if slice.len() == n {
Ok((ok(slice), self))
} else {
Err(err(slice))
}
}
fn iread_all<A>(self, ok: impl FnOnce(&[u8]) -> A) -> A {
ok(self.read_all())
}
fn itell(&self) -> usize {
self.tell()
}
}
pub type ResultDyn<A, I> = Result<(A, I), Vec<u8>>; pub type ResultDyn<A, I> = Result<(A, I), Vec<u8>>;
pub trait InCtxDyn<'a: 'c, 'c, Ctx: Context<'a>>: 'c { pub trait InCtxDyn<'a: 'c, 'c, Ctx: Context<'a>>: 'c {