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}