aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/primitive/mod.rs
blob: 42f6aae5b15811f97c115af9e7d351f256348d2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#[allow(dead_code)]
pub mod basic;
pub mod variant;

pub use basic::*;
pub use variant::*;


pub mod serialize {
    use crate::protocol::error::ErrorKind;

    pub trait Serialize {
        fn serialize(&self) -> Result<Vec<u8>, ErrorKind>;
    }
    pub trait SerializeUTF8 {
        fn serialize_utf8(&self) -> Result<Vec<u8>, ErrorKind>;
    }
}

pub mod deserialize {
    use crate::protocol::error::ErrorKind;

    pub trait Deserialize {
        fn parse(b: &[u8]) -> Result<(usize, Self), ErrorKind> where Self: std::marker::Sized ;
    }
    pub trait DeserializeUTF8 {
        fn parse_utf8(b: &[u8]) -> Result<(usize, Self), ErrorKind> where Self: std::marker::Sized ;
    }
}

pub mod qread {
    use crate::protocol::error::ErrorKind;

    pub trait QRead {
        fn read<T: std::io::Read>(stream: &mut T, buf: &mut [u8]) -> Result<usize, ErrorKind>;
    }
}