@@ -17,15 +17,13 @@ pub use bitcoin::p2p::message::{CommandString, NetworkMessage};
1717
1818#[ derive( Debug ) ]
1919pub enum Error {
20- Serialize ( bitcoin:: io:: Error ) ,
2120 Deserialize ( bitcoin:: consensus:: encode:: Error ) ,
2221 UnknownShortID ( u8 ) ,
2322}
2423
2524impl fmt:: Display for Error {
2625 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
2726 match self {
28- Error :: Serialize ( e) => write ! ( f, "Unable to serialize {e}" ) ,
2927 Error :: Deserialize ( e) => write ! ( f, "Unable to deserialize {e}" ) ,
3028 Error :: UnknownShortID ( b) => write ! ( f, "Unrecognized short ID when deserializing {b}" ) ,
3129 }
@@ -35,15 +33,17 @@ impl fmt::Display for Error {
3533impl std:: error:: Error for Error {
3634 fn source ( & self ) -> Option < & ( dyn std:: error:: Error + ' static ) > {
3735 match self {
38- Error :: Serialize ( e) => Some ( e) ,
3936 Error :: Deserialize ( e) => Some ( e) ,
4037 Error :: UnknownShortID ( _) => None ,
4138 }
4239 }
4340}
4441
4542/// Serialize a [`NetworkMessage`] into a buffer.
46- pub fn serialize ( msg : NetworkMessage ) -> Result < Vec < u8 > , Error > {
43+ ///
44+ /// This function is infallible because the underlying `consensus_encode()`
45+ /// operations only fail on I/O errors, which cannot occur when writing to an in-memory `Vec<u8>`.
46+ pub fn serialize ( msg : NetworkMessage ) -> Vec < u8 > {
4747 let mut buffer = Vec :: new ( ) ;
4848 match & msg {
4949 NetworkMessage :: Addr ( _) => {
@@ -142,7 +142,7 @@ pub fn serialize(msg: NetworkMessage) -> Result<Vec<u8>, Error> {
142142 buffer. push ( 0u8 ) ;
143143 msg. command ( )
144144 . consensus_encode ( & mut buffer)
145- . map_err ( Error :: Serialize ) ? ;
145+ . expect ( "Encoding to Vec<u8> never fails" ) ;
146146 }
147147 NetworkMessage :: Unknown {
148148 command,
@@ -151,14 +151,14 @@ pub fn serialize(msg: NetworkMessage) -> Result<Vec<u8>, Error> {
151151 buffer. push ( 0u8 ) ;
152152 command
153153 . consensus_encode ( & mut buffer)
154- . map_err ( Error :: Serialize ) ? ;
154+ . expect ( "Encoding to Vec<u8> never fails" ) ;
155155 }
156156 }
157157
158158 msg. consensus_encode ( & mut buffer)
159- . map_err ( Error :: Serialize ) ? ;
159+ . expect ( "Encoding to Vec<u8> never fails" ) ;
160160
161- Ok ( buffer)
161+ buffer
162162}
163163
164164/// Deserialize v2 message into [`NetworkMessage`].
0 commit comments