@@ -5,14 +5,13 @@ use std::{
5
5
net:: { IpAddr , Ipv4Addr , Ipv6Addr } ,
6
6
} ;
7
7
8
- use anyhow:: Context ;
9
8
use byteorder:: { BigEndian , ByteOrder , NativeEndian } ;
10
9
11
10
use crate :: DecodeError ;
12
11
13
12
pub fn parse_mac ( payload : & [ u8 ] ) -> Result < [ u8 ; 6 ] , DecodeError > {
14
13
if payload. len ( ) != 6 {
15
- return Err ( format ! ( "invalid MAC address: {payload:?}" ) . into ( ) ) ;
14
+ return Err ( DecodeError :: InvalidMACAddress ) ;
16
15
}
17
16
let mut address: [ u8 ; 6 ] = [ 0 ; 6 ] ;
18
17
for ( i, byte) in payload. iter ( ) . enumerate ( ) {
@@ -23,7 +22,7 @@ pub fn parse_mac(payload: &[u8]) -> Result<[u8; 6], DecodeError> {
23
22
24
23
pub fn parse_ipv6 ( payload : & [ u8 ] ) -> Result < [ u8 ; 16 ] , DecodeError > {
25
24
if payload. len ( ) != 16 {
26
- return Err ( format ! ( "invalid IPv6 address: {payload:?}" ) . into ( ) ) ;
25
+ return Err ( DecodeError :: InvalidIPAddress ) ;
27
26
}
28
27
let mut address: [ u8 ; 16 ] = [ 0 ; 16 ] ;
29
28
for ( i, byte) in payload. iter ( ) . enumerate ( ) {
@@ -57,7 +56,7 @@ pub fn parse_ip(payload: &[u8]) -> Result<IpAddr, DecodeError> {
57
56
payload[ 15 ] ,
58
57
] )
59
58
. into ( ) ) ,
60
- _ => Err ( format ! ( "invalid IPv6 address: {payload:?}" ) . into ( ) ) ,
59
+ _ => Err ( DecodeError :: InvalidIPAddress ) ,
61
60
}
62
61
}
63
62
@@ -71,62 +70,62 @@ pub fn parse_string(payload: &[u8]) -> Result<String, DecodeError> {
71
70
} else {
72
71
& payload[ ..payload. len ( ) ]
73
72
} ;
74
- let s = String :: from_utf8 ( slice. to_vec ( ) ) . context ( "invalid string" ) ?;
73
+ let s = String :: from_utf8 ( slice. to_vec ( ) ) ?;
75
74
Ok ( s)
76
75
}
77
76
78
77
pub fn parse_u8 ( payload : & [ u8 ] ) -> Result < u8 , DecodeError > {
79
78
if payload. len ( ) != 1 {
80
- return Err ( format ! ( "invalid u8: {payload:?}" ) . into ( ) ) ;
79
+ return Err ( DecodeError :: InvalidU8 ) ;
81
80
}
82
81
Ok ( payload[ 0 ] )
83
82
}
84
83
85
84
pub fn parse_u32 ( payload : & [ u8 ] ) -> Result < u32 , DecodeError > {
86
85
if payload. len ( ) != size_of :: < u32 > ( ) {
87
- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
86
+ return Err ( DecodeError :: InvalidU32 ) ;
88
87
}
89
88
Ok ( NativeEndian :: read_u32 ( payload) )
90
89
}
91
90
92
91
pub fn parse_u64 ( payload : & [ u8 ] ) -> Result < u64 , DecodeError > {
93
92
if payload. len ( ) != size_of :: < u64 > ( ) {
94
- return Err ( format ! ( "invalid u64: {payload:?}" ) . into ( ) ) ;
93
+ return Err ( DecodeError :: InvalidU64 ) ;
95
94
}
96
95
Ok ( NativeEndian :: read_u64 ( payload) )
97
96
}
98
97
99
98
pub fn parse_u128 ( payload : & [ u8 ] ) -> Result < u128 , DecodeError > {
100
99
if payload. len ( ) != size_of :: < u128 > ( ) {
101
- return Err ( format ! ( "invalid u128: {payload:?}" ) . into ( ) ) ;
100
+ return Err ( DecodeError :: InvalidU128 ) ;
102
101
}
103
102
Ok ( NativeEndian :: read_u128 ( payload) )
104
103
}
105
104
106
105
pub fn parse_u16 ( payload : & [ u8 ] ) -> Result < u16 , DecodeError > {
107
106
if payload. len ( ) != size_of :: < u16 > ( ) {
108
- return Err ( format ! ( "invalid u16: {payload:?}" ) . into ( ) ) ;
107
+ return Err ( DecodeError :: InvalidU16 ) ;
109
108
}
110
109
Ok ( NativeEndian :: read_u16 ( payload) )
111
110
}
112
111
113
112
pub fn parse_i32 ( payload : & [ u8 ] ) -> Result < i32 , DecodeError > {
114
113
if payload. len ( ) != 4 {
115
- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
114
+ return Err ( DecodeError :: InvalidI32 ) ;
116
115
}
117
116
Ok ( NativeEndian :: read_i32 ( payload) )
118
117
}
119
118
120
119
pub fn parse_u16_be ( payload : & [ u8 ] ) -> Result < u16 , DecodeError > {
121
120
if payload. len ( ) != size_of :: < u16 > ( ) {
122
- return Err ( format ! ( "invalid u16: {payload:?}" ) . into ( ) ) ;
121
+ return Err ( DecodeError :: InvalidU16 ) ;
123
122
}
124
123
Ok ( BigEndian :: read_u16 ( payload) )
125
124
}
126
125
127
126
pub fn parse_u32_be ( payload : & [ u8 ] ) -> Result < u32 , DecodeError > {
128
127
if payload. len ( ) != size_of :: < u32 > ( ) {
129
- return Err ( format ! ( "invalid u32: {payload:?}" ) . into ( ) ) ;
128
+ return Err ( DecodeError :: InvalidU32 ) ;
130
129
}
131
130
Ok ( BigEndian :: read_u32 ( payload) )
132
131
}
0 commit comments