@@ -5,14 +5,13 @@ use std::{
55 net:: { IpAddr , Ipv4Addr , Ipv6Addr } ,
66} ;
77
8- use anyhow:: Context ;
98use byteorder:: { BigEndian , ByteOrder , NativeEndian } ;
109
1110use crate :: DecodeError ;
1211
1312pub fn parse_mac ( payload : & [ u8 ] ) -> Result < [ u8 ; 6 ] , DecodeError > {
1413 if payload. len ( ) != 6 {
15- return Err ( format ! ( "invalid MAC address: {payload:?}" ) . into ( ) ) ;
14+ return Err ( DecodeError :: InvalidMACAddress ) ;
1615 }
1716 let mut address: [ u8 ; 6 ] = [ 0 ; 6 ] ;
1817 for ( i, byte) in payload. iter ( ) . enumerate ( ) {
@@ -23,7 +22,7 @@ pub fn parse_mac(payload: &[u8]) -> Result<[u8; 6], DecodeError> {
2322
2423pub fn parse_ipv6 ( payload : & [ u8 ] ) -> Result < [ u8 ; 16 ] , DecodeError > {
2524 if payload. len ( ) != 16 {
26- return Err ( format ! ( "invalid IPv6 address: {payload:?}" ) . into ( ) ) ;
25+ return Err ( DecodeError :: InvalidIPv6Address ) ;
2726 }
2827 let mut address: [ u8 ; 16 ] = [ 0 ; 16 ] ;
2928 for ( i, byte) in payload. iter ( ) . enumerate ( ) {
@@ -57,7 +56,7 @@ pub fn parse_ip(payload: &[u8]) -> Result<IpAddr, DecodeError> {
5756 payload[ 15 ] ,
5857 ] )
5958 . into ( ) ) ,
60- _ => Err ( format ! ( "invalid IPv6 address: {payload:?}" ) . into ( ) ) ,
59+ _ => Err ( DecodeError :: InvalidIPv6Address ) ,
6160 }
6261}
6362
@@ -71,62 +70,62 @@ pub fn parse_string(payload: &[u8]) -> Result<String, DecodeError> {
7170 } else {
7271 & payload[ ..payload. len ( ) ]
7372 } ;
74- let s = String :: from_utf8 ( slice. to_vec ( ) ) . context ( "invalid string" ) ?;
73+ let s = String :: from_utf8 ( slice. to_vec ( ) ) ?;
7574 Ok ( s)
7675}
7776
7877pub fn parse_u8 ( payload : & [ u8 ] ) -> Result < u8 , DecodeError > {
7978 if payload. len ( ) != 1 {
80- return Err ( format ! ( "invalid u8: {payload:?}" ) . into ( ) ) ;
79+ return Err ( DecodeError :: InvalidU8 ) ;
8180 }
8281 Ok ( payload[ 0 ] )
8382}
8483
8584pub fn parse_u32 ( payload : & [ u8 ] ) -> Result < u32 , DecodeError > {
8685 if payload. len ( ) != size_of :: < u32 > ( ) {
87- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
86+ return Err ( DecodeError :: InvalidU32 ) ;
8887 }
8988 Ok ( NativeEndian :: read_u32 ( payload) )
9089}
9190
9291pub fn parse_u64 ( payload : & [ u8 ] ) -> Result < u64 , DecodeError > {
9392 if payload. len ( ) != size_of :: < u64 > ( ) {
94- return Err ( format ! ( "invalid u64: {payload:?}" ) . into ( ) ) ;
93+ return Err ( DecodeError :: InvalidU64 ) ;
9594 }
9695 Ok ( NativeEndian :: read_u64 ( payload) )
9796}
9897
9998pub fn parse_u128 ( payload : & [ u8 ] ) -> Result < u128 , DecodeError > {
10099 if payload. len ( ) != size_of :: < u128 > ( ) {
101- return Err ( format ! ( "invalid u128: {payload:?}" ) . into ( ) ) ;
100+ return Err ( DecodeError :: InvalidU128 ) ;
102101 }
103102 Ok ( NativeEndian :: read_u128 ( payload) )
104103}
105104
106105pub fn parse_u16 ( payload : & [ u8 ] ) -> Result < u16 , DecodeError > {
107106 if payload. len ( ) != size_of :: < u16 > ( ) {
108- return Err ( format ! ( "invalid u16: {payload:?}" ) . into ( ) ) ;
107+ return Err ( DecodeError :: InvalidU16 ) ;
109108 }
110109 Ok ( NativeEndian :: read_u16 ( payload) )
111110}
112111
113112pub fn parse_i32 ( payload : & [ u8 ] ) -> Result < i32 , DecodeError > {
114113 if payload. len ( ) != 4 {
115- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
114+ return Err ( DecodeError :: InvalidI32 ) ;
116115 }
117116 Ok ( NativeEndian :: read_i32 ( payload) )
118117}
119118
120119pub fn parse_u16_be ( payload : & [ u8 ] ) -> Result < u16 , DecodeError > {
121120 if payload. len ( ) != size_of :: < u16 > ( ) {
122- return Err ( format ! ( "invalid u16: {payload:?}" ) . into ( ) ) ;
121+ return Err ( DecodeError :: InvalidU16 ) ;
123122 }
124123 Ok ( BigEndian :: read_u16 ( payload) )
125124}
126125
127126pub fn parse_u32_be ( payload : & [ u8 ] ) -> Result < u32 , DecodeError > {
128127 if payload. len ( ) != size_of :: < u32 > ( ) {
129- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
128+ return Err ( DecodeError :: InvalidU32 ) ;
130129 }
131130 Ok ( BigEndian :: read_u32 ( payload) )
132131}
0 commit comments