flat_rs/
decode.rs

1mod decoder;
2mod error;
3
4use crate::filler::Filler;
5
6pub use decoder::Decoder;
7pub use error::Error;
8
9pub trait Decode<'b>: Sized {
10    fn decode(d: &mut Decoder) -> Result<Self, Error>;
11}
12
13impl Decode<'_> for Filler {
14    fn decode(d: &mut Decoder) -> Result<Filler, Error> {
15        d.filler()?;
16
17        Ok(Filler::FillerEnd)
18    }
19}
20
21impl Decode<'_> for Vec<u8> {
22    fn decode(d: &mut Decoder) -> Result<Self, Error> {
23        d.bytes()
24    }
25}
26
27impl Decode<'_> for u8 {
28    fn decode(d: &mut Decoder) -> Result<Self, Error> {
29        d.u8()
30    }
31}
32
33impl Decode<'_> for isize {
34    fn decode(d: &mut Decoder) -> Result<Self, Error> {
35        d.integer()
36    }
37}
38
39impl Decode<'_> for i128 {
40    fn decode(d: &mut Decoder) -> Result<Self, Error> {
41        d.big_integer()
42    }
43}
44
45impl Decode<'_> for usize {
46    fn decode(d: &mut Decoder) -> Result<Self, Error> {
47        d.word()
48    }
49}
50
51impl Decode<'_> for char {
52    fn decode(d: &mut Decoder) -> Result<Self, Error> {
53        d.char()
54    }
55}
56
57impl Decode<'_> for String {
58    fn decode(d: &mut Decoder) -> Result<Self, Error> {
59        d.utf8()
60    }
61}
62
63impl Decode<'_> for bool {
64    fn decode(d: &mut Decoder) -> Result<bool, Error> {
65        d.bool()
66    }
67}