File tree Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,7 @@ pub use to_header_values::ToHeaderValues;
28
28
pub use values:: Values ;
29
29
30
30
/// A collection of HTTP Headers.
31
- #[ derive( Debug , Clone ) ]
31
+ #[ derive( Debug ) ]
32
32
pub struct Headers {
33
33
headers : HashMap < HeaderName , Vec < HeaderValue > > ,
34
34
}
@@ -144,6 +144,25 @@ impl<'a> IntoIterator for &'a mut Headers {
144
144
}
145
145
}
146
146
147
+ impl std:: iter:: FromIterator < ( HeaderName , Vec < HeaderValue > ) > for Headers {
148
+ fn from_iter < I : IntoIterator < Item = ( HeaderName , Vec < HeaderValue > ) > > ( iter : I ) -> Self {
149
+ Headers {
150
+ headers : iter. into_iter ( ) . collect ( ) ,
151
+ }
152
+ }
153
+ }
154
+
155
+ impl < ' a > std:: iter:: FromIterator < ( & ' a HeaderName , & ' a Vec < HeaderValue > ) > for Headers {
156
+ fn from_iter < I : IntoIterator < Item = ( & ' a HeaderName , & ' a Vec < HeaderValue > ) > > ( iter : I ) -> Self {
157
+ Headers {
158
+ headers : iter
159
+ . into_iter ( )
160
+ . map ( |( name, values) | ( name. clone ( ) , values. clone ( ) ) )
161
+ . collect ( ) ,
162
+ }
163
+ }
164
+ }
165
+
147
166
#[ cfg( test) ]
148
167
mod tests {
149
168
use super :: * ;
Original file line number Diff line number Diff line change @@ -55,8 +55,11 @@ impl Request {
55
55
}
56
56
57
57
/// Set the headers.
58
- pub fn set_headers ( & mut self , headers : Headers ) {
59
- self . headers = headers;
58
+ pub fn set_headers < ' a , T : IntoIterator < Item = ( & ' a HeaderName , & ' a Vec < HeaderValue > ) > > (
59
+ & mut self ,
60
+ headers : T ,
61
+ ) {
62
+ self . headers = headers. into_iter ( ) . collect ( ) ;
60
63
}
61
64
62
65
/// Get a reference to the url.
You can’t perform that action at this time.
0 commit comments