64
64
C : ContainerBytes ,
65
65
{
66
66
fn from_bytes ( mut bytes : crate :: bytes:: arc:: Bytes ) -> Self {
67
+ use byteorder:: ReadBytesExt ;
67
68
let mut slice = & bytes[ ..] ;
68
- let from: usize = :: bincode :: deserialize_from ( & mut slice ) . expect ( "bincode::deserialize() failed" ) ;
69
- let seq: usize = :: bincode :: deserialize_from ( & mut slice ) . expect ( "bincode::deserialize() failed" ) ;
69
+ let from: usize = slice . read_u64 :: < byteorder :: LittleEndian > ( ) . unwrap ( ) . try_into ( ) . unwrap ( ) ;
70
+ let seq: usize = slice . read_u64 :: < byteorder :: LittleEndian > ( ) . unwrap ( ) . try_into ( ) . unwrap ( ) ;
70
71
let time: T = :: bincode:: deserialize_from ( & mut slice) . expect ( "bincode::deserialize() failed" ) ;
71
72
let bytes_read = bytes. len ( ) - slice. len ( ) ;
72
73
bytes. extract_to ( bytes_read) ;
@@ -75,15 +76,16 @@ where
75
76
}
76
77
77
78
fn length_in_bytes ( & self ) -> usize {
78
- :: bincode :: serialized_size ( & self . from ) . expect ( "bincode::serialized_size() failed" ) as usize +
79
- :: bincode :: serialized_size ( & self . seq ) . expect ( "bincode::serialized_size() failed" ) as usize +
79
+ // 16 comes from the two `u64` fields: `from` and `seq`.
80
+ 16 +
80
81
:: bincode:: serialized_size ( & self . time ) . expect ( "bincode::serialized_size() failed" ) as usize +
81
82
self . data . length_in_bytes ( )
82
83
}
83
84
84
85
fn into_bytes < W : :: std:: io:: Write > ( & self , writer : & mut W ) {
85
- :: bincode:: serialize_into ( & mut * writer, & self . from ) . expect ( "bincode::serialize_into() failed" ) ;
86
- :: bincode:: serialize_into ( & mut * writer, & self . seq ) . expect ( "bincode::serialize_into() failed" ) ;
86
+ use byteorder:: WriteBytesExt ;
87
+ writer. write_u64 :: < byteorder:: LittleEndian > ( self . from . try_into ( ) . unwrap ( ) ) . unwrap ( ) ;
88
+ writer. write_u64 :: < byteorder:: LittleEndian > ( self . seq . try_into ( ) . unwrap ( ) ) . unwrap ( ) ;
87
89
:: bincode:: serialize_into ( & mut * writer, & self . time ) . expect ( "bincode::serialize_into() failed" ) ;
88
90
self . data . into_bytes ( & mut * writer) ;
89
91
}
0 commit comments