muta_protocol/fixed_codec/
mod.rs1#[macro_use]
2mod r#macro;
3pub mod epoch;
4pub mod primitive;
5pub mod receipt;
6#[cfg(test)]
7pub mod tests;
8pub mod transaction;
9
10use std::error::Error;
11
12use bytes::Bytes;
13use derive_more::{Display, From};
14
15use crate::{ProtocolError, ProtocolErrorKind, ProtocolResult};
16
17pub trait FixedCodec: Sized {
19 fn encode_fixed(&self) -> ProtocolResult<Bytes>;
20
21 fn decode_fixed(bytes: Bytes) -> ProtocolResult<Self>;
22}
23
24#[derive(Debug, Display, From)]
25pub enum FixedCodecError {
26 Decoder(rlp::DecoderError),
27
28 StringUTF8(std::string::FromUtf8Error),
29
30 #[display(fmt = "wrong bytes of bool")]
31 DecodeBool,
32
33 #[display(fmt = "wrong bytes of u8")]
34 DecodeUint8,
35}
36
37impl Error for FixedCodecError {}
38
39impl From<FixedCodecError> for ProtocolError {
40 fn from(err: FixedCodecError) -> ProtocolError {
41 ProtocolError::new(ProtocolErrorKind::FixedCodec, Box::new(err))
42 }
43}