@@ -6,6 +6,7 @@ use super::body::hyper_body;
6
6
use super :: error:: hyper_code;
7
7
use super :: task:: { hyper_task_return_type, AsTaskType } ;
8
8
use super :: HYPER_ITER_CONTINUE ;
9
+ use crate :: ext:: HeaderCaseMap ;
9
10
use crate :: header:: { HeaderName , HeaderValue } ;
10
11
use crate :: { Body , HeaderMap , Method , Request , Response , Uri } ;
11
12
@@ -18,16 +19,11 @@ pub struct hyper_response(pub(super) Response<Body>);
18
19
/// An HTTP header map.
19
20
///
20
21
/// These can be part of a request or response.
21
- #[ derive( Default ) ]
22
22
pub struct hyper_headers {
23
23
pub ( super ) headers : HeaderMap ,
24
24
orig_casing : HeaderCaseMap ,
25
25
}
26
26
27
- // Will probably be moved to `hyper::ext::http1`
28
- #[ derive( Debug , Default ) ]
29
- pub ( crate ) struct HeaderCaseMap ( HeaderMap < Bytes > ) ;
30
-
31
27
#[ derive( Debug ) ]
32
28
pub ( crate ) struct ReasonPhrase ( pub ( crate ) Bytes ) ;
33
29
@@ -229,7 +225,7 @@ impl hyper_response {
229
225
let orig_casing = resp
230
226
. extensions_mut ( )
231
227
. remove :: < HeaderCaseMap > ( )
232
- . unwrap_or_default ( ) ;
228
+ . unwrap_or_else ( HeaderCaseMap :: default ) ;
233
229
resp. extensions_mut ( ) . insert ( hyper_headers {
234
230
headers,
235
231
orig_casing,
@@ -265,10 +261,7 @@ type hyper_headers_foreach_callback =
265
261
impl hyper_headers {
266
262
pub ( super ) fn get_or_default ( ext : & mut http:: Extensions ) -> & mut hyper_headers {
267
263
if let None = ext. get_mut :: < hyper_headers > ( ) {
268
- ext. insert ( hyper_headers {
269
- headers : Default :: default ( ) ,
270
- orig_casing : Default :: default ( ) ,
271
- } ) ;
264
+ ext. insert ( hyper_headers:: default ( ) ) ;
272
265
}
273
266
274
267
ext. get_mut :: < hyper_headers > ( ) . unwrap ( )
@@ -290,11 +283,11 @@ ffi_fn! {
290
283
//
291
284
// TODO: consider adding http::HeaderMap::entries() iterator
292
285
for name in headers. headers. keys( ) {
293
- let mut names = headers. orig_casing. get_all( name) . iter ( ) ;
286
+ let mut names = headers. orig_casing. get_all( name) ;
294
287
295
288
for value in headers. headers. get_all( name) {
296
289
let ( name_ptr, name_len) = if let Some ( orig_name) = names. next( ) {
297
- ( orig_name. as_ptr( ) , orig_name. len( ) )
290
+ ( orig_name. as_ref ( ) . as_ptr( ) , orig_name. as_ref ( ) . len( ) )
298
291
} else {
299
292
(
300
293
name. as_str( ) . as_bytes( ) . as_ptr( ) ,
@@ -349,6 +342,15 @@ ffi_fn! {
349
342
}
350
343
}
351
344
345
+ impl Default for hyper_headers {
346
+ fn default ( ) -> Self {
347
+ Self {
348
+ headers : Default :: default ( ) ,
349
+ orig_casing : HeaderCaseMap :: default ( ) ,
350
+ }
351
+ }
352
+ }
353
+
352
354
unsafe fn raw_name_value (
353
355
name : * const u8 ,
354
356
name_len : size_t ,
@@ -370,25 +372,6 @@ unsafe fn raw_name_value(
370
372
Ok ( ( name, value, orig_name) )
371
373
}
372
374
373
- // ===== impl HeaderCaseMap =====
374
-
375
- impl HeaderCaseMap {
376
- pub ( crate ) fn get_all ( & self , name : & HeaderName ) -> http:: header:: GetAll < ' _ , Bytes > {
377
- self . 0 . get_all ( name)
378
- }
379
-
380
- pub ( crate ) fn insert ( & mut self , name : HeaderName , orig : Bytes ) {
381
- self . 0 . insert ( name, orig) ;
382
- }
383
-
384
- pub ( crate ) fn append < N > ( & mut self , name : N , orig : Bytes )
385
- where
386
- N : http:: header:: IntoHeaderName ,
387
- {
388
- self . 0 . append ( name, orig) ;
389
- }
390
- }
391
-
392
375
#[ cfg( test) ]
393
376
mod tests {
394
377
use super :: * ;
0 commit comments