@@ -112,18 +112,18 @@ impl<'a> Parser<'a> {
112112 max_digits : Option < usize > ,
113113 allow_zero_prefix : bool ,
114114 ) -> Option < T > {
115- // If max_digits.is_some(), then we are parsing a `u8` or `u16` and
116- // don't need to use checked arithmetic since it fits within a `u32`.
117- if let Some ( max_digits) = max_digits {
118- // u32::MAX = 4_294_967_295u32, which is 10 digits long.
119- // `max_digits` must be less than 10 to not overflow a `u32`.
120- debug_assert ! ( max_digits < 10 ) ;
121-
122- self . read_atomically ( move |p| {
123- let mut result = 0_u32 ;
124- let mut digit_count = 0 ;
125- let has_leading_zero = p. peek_char ( ) == Some ( '0' ) ;
115+ self . read_atomically ( move |p| {
116+ let mut digit_count = 0 ;
117+ let has_leading_zero = p. peek_char ( ) == Some ( '0' ) ;
118+
119+ // If max_digits.is_some(), then we are parsing a `u8` or `u16` and
120+ // don't need to use checked arithmetic since it fits within a `u32`.
121+ let result = if let Some ( max_digits) = max_digits {
122+ // u32::MAX = 4_294_967_295u32, which is 10 digits long.
123+ // `max_digits` must be less than 10 to not overflow a `u32`.
124+ debug_assert ! ( max_digits < 10 ) ;
126125
126+ let mut result = 0_u32 ;
127127 while let Some ( digit) = p. read_atomically ( |p| p. read_char ( ) ?. to_digit ( radix) ) {
128128 result *= radix;
129129 result += digit;
@@ -134,35 +134,27 @@ impl<'a> Parser<'a> {
134134 }
135135 }
136136
137- if digit_count == 0 {
138- None
139- } else if !allow_zero_prefix && has_leading_zero && digit_count > 1 {
140- None
141- } else {
142- result. try_into ( ) . ok ( )
143- }
144- } )
145- } else {
146- self . read_atomically ( move |p| {
137+ result. try_into ( ) . ok ( )
138+ } else {
147139 let mut result = T :: ZERO ;
148- let mut digit_count = 0 ;
149- let has_leading_zero = p. peek_char ( ) == Some ( '0' ) ;
150140
151141 while let Some ( digit) = p. read_atomically ( |p| p. read_char ( ) ?. to_digit ( radix) ) {
152142 result = result. checked_mul ( radix) ?;
153143 result = result. checked_add ( digit) ?;
154144 digit_count += 1 ;
155145 }
156146
157- if digit_count == 0 {
158- None
159- } else if !allow_zero_prefix && has_leading_zero && digit_count > 1 {
160- None
161- } else {
162- Some ( result)
163- }
164- } )
165- }
147+ Some ( result)
148+ } ;
149+
150+ if digit_count == 0 {
151+ None
152+ } else if !allow_zero_prefix && has_leading_zero && digit_count > 1 {
153+ None
154+ } else {
155+ result
156+ }
157+ } )
166158 }
167159
168160 /// Reads an IPv4 address.
0 commit comments