11/// protobuf encoding utils
2- /// cloned from https://github.com/hyperium/tonic/
2+ /// cloned from `< https://github.com/hyperium/tonic/>`
33use std:: { borrow:: Cow , cmp:: min, convert:: TryFrom , fmt, rc:: Rc } ;
44
55use ntex_bytes:: { Buf , BufMut , Bytes , BytesMut } ;
@@ -54,10 +54,9 @@ pub fn encode_varint(mut value: u64, buf: &mut BytesMut) {
5454 if value < 0x80 {
5555 buf. put_u8 ( value as u8 ) ;
5656 break ;
57- } else {
58- buf. put_u8 ( ( ( value & 0x7F ) | 0x80 ) as u8 ) ;
59- value >>= 7 ;
6057 }
58+ buf. put_u8 ( ( ( value & 0x7F ) | 0x80 ) as u8 ) ;
59+ value >>= 7 ;
6160 }
6261}
6362
@@ -108,67 +107,67 @@ fn decode_varint_slice(bytes: &[u8]) -> Result<(u64, usize), DecodeError> {
108107 let mut part0: u32 = u32:: from ( b) ;
109108 if b < 0x80 {
110109 return Ok ( ( u64:: from ( part0) , 1 ) ) ;
111- } ;
110+ }
112111 part0 -= 0x80 ;
113112 b = unsafe { * bytes. get_unchecked ( 1 ) } ;
114113 part0 += u32:: from ( b) << 7 ;
115114 if b < 0x80 {
116115 return Ok ( ( u64:: from ( part0) , 2 ) ) ;
117- } ;
116+ }
118117 part0 -= 0x80 << 7 ;
119118 b = unsafe { * bytes. get_unchecked ( 2 ) } ;
120119 part0 += u32:: from ( b) << 14 ;
121120 if b < 0x80 {
122121 return Ok ( ( u64:: from ( part0) , 3 ) ) ;
123- } ;
122+ }
124123 part0 -= 0x80 << 14 ;
125124 b = unsafe { * bytes. get_unchecked ( 3 ) } ;
126125 part0 += u32:: from ( b) << 21 ;
127126 if b < 0x80 {
128127 return Ok ( ( u64:: from ( part0) , 4 ) ) ;
129- } ;
128+ }
130129 part0 -= 0x80 << 21 ;
131130 let value = u64:: from ( part0) ;
132131
133132 b = unsafe { * bytes. get_unchecked ( 4 ) } ;
134133 let mut part1: u32 = u32:: from ( b) ;
135134 if b < 0x80 {
136135 return Ok ( ( value + ( u64:: from ( part1) << 28 ) , 5 ) ) ;
137- } ;
136+ }
138137 part1 -= 0x80 ;
139138 b = unsafe { * bytes. get_unchecked ( 5 ) } ;
140139 part1 += u32:: from ( b) << 7 ;
141140 if b < 0x80 {
142141 return Ok ( ( value + ( u64:: from ( part1) << 28 ) , 6 ) ) ;
143- } ;
142+ }
144143 part1 -= 0x80 << 7 ;
145144 b = unsafe { * bytes. get_unchecked ( 6 ) } ;
146145 part1 += u32:: from ( b) << 14 ;
147146 if b < 0x80 {
148147 return Ok ( ( value + ( u64:: from ( part1) << 28 ) , 7 ) ) ;
149- } ;
148+ }
150149 part1 -= 0x80 << 14 ;
151150 b = unsafe { * bytes. get_unchecked ( 7 ) } ;
152151 part1 += u32:: from ( b) << 21 ;
153152 if b < 0x80 {
154153 return Ok ( ( value + ( u64:: from ( part1) << 28 ) , 8 ) ) ;
155- } ;
154+ }
156155 part1 -= 0x80 << 21 ;
157156 let value = value + ( ( u64:: from ( part1) ) << 28 ) ;
158157
159158 b = unsafe { * bytes. get_unchecked ( 8 ) } ;
160159 let mut part2: u32 = u32:: from ( b) ;
161160 if b < 0x80 {
162161 return Ok ( ( value + ( u64:: from ( part2) << 56 ) , 9 ) ) ;
163- } ;
162+ }
164163 part2 -= 0x80 ;
165164 b = unsafe { * bytes. get_unchecked ( 9 ) } ;
166165 part2 += u32:: from ( b) << 7 ;
167166 // Check for u64::MAX overflow. See [`ConsumeVarint`][1] for details.
168167 // [1]: https://github.com/protocolbuffers/protobuf-go/blob/v1.27.1/encoding/protowire/wire.go#L358
169168 if b < 0x02 {
170169 return Ok ( ( value + ( u64:: from ( part2) << 56 ) , 10 ) ) ;
171- } ;
170+ }
172171
173172 // We have overrun the maximum size of a varint (10 bytes) or the final byte caused an overflow.
174173 // Assume the data is corrupt.
@@ -194,11 +193,11 @@ where
194193 if byte <= 0x7F {
195194 // Check for u64::MAX overflow. See [`ConsumeVarint`][1] for details.
196195 // [1]: https://github.com/protocolbuffers/protobuf-go/blob/v1.27.1/encoding/protowire/wire.go#L358
197- if count == 9 && byte >= 0x02 {
198- return Err ( DecodeError :: new ( "invalid varint" ) ) ;
196+ return if count == 9 && byte >= 0x02 {
197+ Err ( DecodeError :: new ( "invalid varint" ) )
199198 } else {
200- return Ok ( value) ;
201- }
199+ Ok ( value)
200+ } ;
202201 }
203202 }
204203
@@ -312,6 +311,7 @@ impl DecodeError {
312311 ///
313312 /// Meant to be used only by `Message` implementations.
314313 #[ doc( hidden) ]
314+ #[ must_use]
315315 pub fn push ( mut self , message : & ' static str , field : & ' static str ) -> Self {
316316 let inner = if let Some ( inner) = Rc :: get_mut ( & mut self . inner ) {
317317 inner
0 commit comments