move Inlining for Deserializer
to rcore
This commit is contained in:
parent
702bff3276
commit
23cc08ddf5
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user