feat(users/Profpatsch/netencode): add dec::AnyU as id

Change-Id: I3037882dff15243bd7a5c1c78331f8e2ffdbda84
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2493
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
This commit is contained in:
Profpatsch 2021-02-07 09:16:28 +01:00
parent 3faf5b6f09
commit 3226e6243f

View file

@ -604,6 +604,24 @@ pub mod dec {
fn dec(u: U<'a>) -> Result<Self::A, DecodeError>;
}
pub struct AnyT;
pub struct AnyU;
// impl Decoder for AnyT {
// type A = T;
// fn dec(u: U) -> Result<Self::A, DecodeError> {
// // TODO: implement
// parse::u_into_t(u)
// }
// }
impl<'a> Decoder<'a> for AnyU {
type A = U<'a>;
fn dec(u: U<'a>) -> Result<Self::A, DecodeError> {
Ok(u)
}
}
pub struct ScalarAsBytes;
impl<'a> Decoder<'a> for ScalarAsBytes {
@ -637,4 +655,12 @@ pub mod dec {
}
}
}
fn dec_u(b: &[u8]) -> Result<U, DecodeError> {
match parse::u_u(b) {
Ok((b"", u)) => Ok(u),
Ok((rest, _)) => Err(DecodeError(format!("Cannot decode nested U, it contains trailing bytes"))),
Err(err) => Err(DecodeError(format!("Cannot decode nested U bytes: {:?}", err))),
}
}
}