@@ -6,6 +6,7 @@ use super::body::hyper_body;
66use super :: error:: hyper_code;
77use super :: task:: { hyper_task_return_type, AsTaskType } ;
88use super :: HYPER_ITER_CONTINUE ;
9+ use crate :: ext:: HeaderCaseMap ;
910use crate :: header:: { HeaderName , HeaderValue } ;
1011use crate :: { Body , HeaderMap , Method , Request , Response , Uri } ;
1112
@@ -18,16 +19,11 @@ pub struct hyper_response(pub(super) Response<Body>);
1819/// An HTTP header map.
1920///
2021/// These can be part of a request or response.
21- #[ derive( Default ) ]
2222pub struct hyper_headers {
2323 pub ( super ) headers : HeaderMap ,
2424 orig_casing : HeaderCaseMap ,
2525}
2626
27- // Will probably be moved to `hyper::ext::http1`
28- #[ derive( Debug , Default ) ]
29- pub ( crate ) struct HeaderCaseMap ( HeaderMap < Bytes > ) ;
30-
3127#[ derive( Debug ) ]
3228pub ( crate ) struct ReasonPhrase ( pub ( crate ) Bytes ) ;
3329
@@ -229,7 +225,7 @@ impl hyper_response {
229225 let orig_casing = resp
230226 . extensions_mut ( )
231227 . remove :: < HeaderCaseMap > ( )
232- . unwrap_or_default ( ) ;
228+ . unwrap_or_else ( HeaderCaseMap :: default ) ;
233229 resp. extensions_mut ( ) . insert ( hyper_headers {
234230 headers,
235231 orig_casing,
@@ -265,10 +261,7 @@ type hyper_headers_foreach_callback =
265261impl hyper_headers {
266262 pub ( super ) fn get_or_default ( ext : & mut http:: Extensions ) -> & mut hyper_headers {
267263 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 ( ) ) ;
272265 }
273266
274267 ext. get_mut :: < hyper_headers > ( ) . unwrap ( )
@@ -290,11 +283,11 @@ ffi_fn! {
290283 //
291284 // TODO: consider adding http::HeaderMap::entries() iterator
292285 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) ;
294287
295288 for value in headers. headers. get_all( name) {
296289 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( ) )
298291 } else {
299292 (
300293 name. as_str( ) . as_bytes( ) . as_ptr( ) ,
@@ -349,6 +342,15 @@ ffi_fn! {
349342 }
350343}
351344
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+
352354unsafe fn raw_name_value (
353355 name : * const u8 ,
354356 name_len : size_t ,
@@ -370,25 +372,6 @@ unsafe fn raw_name_value(
370372 Ok ( ( name, value, orig_name) )
371373}
372374
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-
392375#[ cfg( test) ]
393376mod tests {
394377 use super :: * ;
0 commit comments