diff options
Diffstat (limited to 'src/protocol/primitive/mod.rs')
| -rw-r--r-- | src/protocol/primitive/mod.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/protocol/primitive/mod.rs b/src/protocol/primitive/mod.rs index 2cdd20a..42f6aae 100644 --- a/src/protocol/primitive/mod.rs +++ b/src/protocol/primitive/mod.rs @@ -5,26 +5,33 @@ pub mod variant; pub use basic::*; pub use variant::*; + pub mod serialize { + use crate::protocol::error::ErrorKind; + pub trait Serialize { - fn serialize(&self) -> Vec<u8>; + fn serialize(&self) -> Result<Vec<u8>, ErrorKind>; } pub trait SerializeUTF8 { - fn serialize_utf8(&self) -> Vec<u8>; + fn serialize_utf8(&self) -> Result<Vec<u8>, ErrorKind>; } } pub mod deserialize { + use crate::protocol::error::ErrorKind; + pub trait Deserialize { - fn parse(b: &[u8]) -> (usize, Self); + fn parse(b: &[u8]) -> Result<(usize, Self), ErrorKind> where Self: std::marker::Sized ; } pub trait DeserializeUTF8 { - fn parse_utf8(b: &[u8]) -> (usize, Self); + 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]) -> usize; + fn read<T: std::io::Read>(stream: &mut T, buf: &mut [u8]) -> Result<usize, ErrorKind>; } } |
