File tree Expand file tree Collapse file tree 4 files changed +14
-19
lines changed Expand file tree Collapse file tree 4 files changed +14
-19
lines changed Original file line number Diff line number Diff line change @@ -122,7 +122,11 @@ impl<'a> PartialEq<&String> for HeaderValue {
122
122
}
123
123
124
124
impl From < HeaderValues > for HeaderValue {
125
- fn from ( other : HeaderValues ) -> Self {
126
- other[ 0 ]
125
+ fn from ( mut other : HeaderValues ) -> Self {
126
+ other. inner . reverse ( ) ;
127
+ other
128
+ . inner
129
+ . pop ( )
130
+ . expect ( "HeaderValues should contain at least one value" )
127
131
}
128
132
}
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ use std::slice::SliceIndex;
10
10
/// This always contains at least one header value.
11
11
#[ derive( Debug , Clone ) ]
12
12
pub struct HeaderValues {
13
- inner : Vec < HeaderValue > ,
13
+ pub ( crate ) inner : Vec < HeaderValue > ,
14
14
}
15
15
16
16
impl HeaderValues {
@@ -30,7 +30,7 @@ impl HeaderValues {
30
30
}
31
31
32
32
/// Returns the last `HeaderValue`.
33
- pub fn last ( & mut self ) -> & HeaderValue {
33
+ pub fn last ( & self ) -> & HeaderValue {
34
34
self . inner
35
35
. last ( )
36
36
. expect ( "HeaderValues must always contain at least one value" )
@@ -66,7 +66,7 @@ impl FromIterator<HeaderValue> for HeaderValues {
66
66
{
67
67
let iter = iter. into_iter ( ) ;
68
68
let mut output = Vec :: with_capacity ( iter. size_hint ( ) . 0 ) ;
69
- for v in output {
69
+ for v in iter {
70
70
output. push ( v) ;
71
71
}
72
72
HeaderValues { inner : output }
@@ -147,13 +147,3 @@ impl<'a> IntoIterator for &'a HeaderValues {
147
147
self . iter ( )
148
148
}
149
149
}
150
-
151
- // impl<'a> IntoIterator for &'a mut HeaderValues {
152
- // type Item = &'a HeaderValue;
153
- // type IntoIter = ValuesMut<'a>;
154
-
155
- // #[inline]
156
- // fn into_iter(self) -> Self::IntoIter {
157
- // self.iter_mut()
158
- // }
159
- // }
Original file line number Diff line number Diff line change @@ -64,8 +64,9 @@ impl<'a> Iterator for Values<'a> {
64
64
65
65
#[ inline]
66
66
fn size_hint ( & self ) -> ( usize , Option < usize > ) {
67
- self . inner
68
- . map ( |inner| inner. size_hint ( ) )
69
- . unwrap_or ( ( 0 , None ) )
67
+ match self . inner . as_ref ( ) {
68
+ Some ( inner) => inner. size_hint ( ) ,
69
+ None => ( 0 , None ) ,
70
+ }
70
71
}
71
72
}
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ fn headers_to_hyperium_headers(headers: &mut Headers, hyperium_headers: &mut htt
71
71
let name = format ! ( "{}" , name) . into_bytes ( ) ;
72
72
let name = http:: header:: HeaderName :: from_bytes ( & name) . unwrap ( ) ;
73
73
74
- for value in values {
74
+ for value in values. iter ( ) {
75
75
let value = format ! ( "{}" , value) . into_bytes ( ) ;
76
76
let value = http:: header:: HeaderValue :: from_bytes ( & value) . unwrap ( ) ;
77
77
hyperium_headers. append ( & name, value) ;
You can’t perform that action at this time.
0 commit comments