@@ -11,16 +11,18 @@ use crate::{
1111pub mod error;
1212use error:: * ;
1313
14- pub fn decompress_multi (
14+ pub fn decompress_multi < ' a , T > (
1515 mut compressed : & [ u8 ] ,
1616 mut writer : & mut Writer < & mut BytesMut > ,
17- encoding_info : & [ EncodingInfo ] ,
18- ) -> Result < BytesMut , MultiDecompressError > {
17+ encoding_info : T ,
18+ ) -> Result < BytesMut , MultiDecompressError >
19+ where
20+ T : Iterator < Item = & ' a EncodingInfo > + std:: iter:: DoubleEndedIterator ,
21+ {
1922 let mut input: & [ u8 ] = compressed;
2023 let mut output: BytesMut = writer. get_mut ( ) . split ( ) ;
2124
22- for ( header_index, encoding_info) in encoding_info. iter ( ) . rev ( ) . enumerate ( )
23- {
25+ for ( header_index, encoding_info) in encoding_info. rev ( ) . enumerate ( ) {
2426 for ( compression_index, encoding) in
2527 encoding_info. encodings ( ) . iter ( ) . rev ( ) . enumerate ( )
2628 {
@@ -77,7 +79,8 @@ mod tests {
7779 ] ,
7880 ) ] ;
7981 let result =
80- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap ( ) ;
82+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
83+ . unwrap ( ) ;
8184 assert_eq ! ( result, INPUT ) ;
8285 }
8386
@@ -95,7 +98,8 @@ mod tests {
9598 ] ;
9699
97100 let result =
98- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap ( ) ;
101+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
102+ . unwrap ( ) ;
99103 assert_eq ! ( result, INPUT ) ;
100104 }
101105
@@ -120,7 +124,8 @@ mod tests {
120124 ] ;
121125
122126 let result =
123- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap ( ) ;
127+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
128+ . unwrap ( ) ;
124129 assert_eq ! ( result, INPUT ) ;
125130 }
126131
@@ -134,7 +139,8 @@ mod tests {
134139 vec![ ContentEncoding :: Deflate , ContentEncoding :: Brotli ] ,
135140 ) ] ;
136141 let result =
137- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap_err ( ) ;
142+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
143+ . unwrap_err ( ) ;
138144 if let MultiDecompressErrorReason :: Partial {
139145 partial_body,
140146 header_index,
@@ -164,7 +170,8 @@ mod tests {
164170 ] ,
165171 ) ] ;
166172 let result =
167- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap_err ( ) ;
173+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
174+ . unwrap_err ( ) ;
168175 if let MultiDecompressErrorReason :: Partial {
169176 partial_body,
170177 header_index,
@@ -187,7 +194,8 @@ mod tests {
187194 EncodingInfo :: new( 4 , vec![ ContentEncoding :: Brotli ] ) ,
188195 ] ;
189196 let result =
190- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap_err ( ) ;
197+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
198+ . unwrap_err ( ) ;
191199 if let MultiDecompressErrorReason :: Partial {
192200 partial_body,
193201 header_index,
@@ -214,7 +222,8 @@ mod tests {
214222 EncodingInfo :: new( 5 , vec![ ContentEncoding :: Identity ] ) ,
215223 ] ;
216224 let result =
217- decompress_multi ( & input, & mut writer, & einfo_list) . unwrap_err ( ) ;
225+ decompress_multi ( & input, & mut writer, & mut einfo_list. iter ( ) )
226+ . unwrap_err ( ) ;
218227 if let MultiDecompressErrorReason :: Partial {
219228 partial_body,
220229 header_index,
@@ -234,7 +243,8 @@ mod tests {
234243 let einfo_list =
235244 vec ! [ EncodingInfo :: new( 0 , vec![ ContentEncoding :: Zstd ] ) ] ;
236245 let result =
237- decompress_multi ( INPUT , & mut writer, & einfo_list) . unwrap_err ( ) ;
246+ decompress_multi ( INPUT , & mut writer, & mut einfo_list. iter ( ) )
247+ . unwrap_err ( ) ;
238248 assert ! ( matches!( result. reason, MultiDecompressErrorReason :: Corrupt ) ) ;
239249 }
240250
@@ -248,7 +258,8 @@ mod tests {
248258 ] ;
249259
250260 let result =
251- decompress_multi ( INPUT , & mut writer, & einfo_list) . unwrap_err ( ) ;
261+ decompress_multi ( INPUT , & mut writer, & mut einfo_list. iter ( ) )
262+ . unwrap_err ( ) ;
252263 assert ! ( matches!( result. reason, MultiDecompressErrorReason :: Corrupt ) ) ;
253264 }
254265}
0 commit comments