@@ -49,27 +49,32 @@ impl Headers {
49
49
& mut self ,
50
50
name : impl Into < HeaderName > ,
51
51
values : impl ToHeaderValues ,
52
- ) -> Option < HeaderValues > {
52
+ ) -> crate :: Result < Option < HeaderValues > > {
53
53
let name = name. into ( ) ;
54
- let values: HeaderValues = values. to_header_values ( ) . unwrap ( ) . collect ( ) ;
55
- self . headers . insert ( name, values)
54
+ let values: HeaderValues = values. to_header_values ( ) ? . collect ( ) ;
55
+ Ok ( self . headers . insert ( name, values) )
56
56
}
57
57
58
58
/// Append a header to the headers.
59
59
///
60
60
/// Unlike `insert` this function will not override the contents of a header, but insert a
61
61
/// header if there aren't any. Or else append to the existing list of headers.
62
- pub fn append ( & mut self , name : impl Into < HeaderName > , values : impl ToHeaderValues ) {
62
+ pub fn append (
63
+ & mut self ,
64
+ name : impl Into < HeaderName > ,
65
+ values : impl ToHeaderValues ,
66
+ ) -> crate :: Result < ( ) > {
63
67
let name = name. into ( ) ;
64
68
match self . get_mut ( & name) {
65
69
Some ( headers) => {
66
- let mut values: HeaderValues = values. to_header_values ( ) . unwrap ( ) . collect ( ) ;
70
+ let mut values: HeaderValues = values. to_header_values ( ) ? . collect ( ) ;
67
71
headers. append ( & mut values) ;
68
72
}
69
73
None => {
70
- self . insert ( name, values) ;
74
+ self . insert ( name, values) ? ;
71
75
}
72
76
}
77
+ Ok ( ( ) )
73
78
}
74
79
75
80
/// Get a reference to a header.
@@ -208,9 +213,9 @@ mod tests {
208
213
let non_static_header = HeaderName :: from_str ( "hello" ) ?;
209
214
210
215
let mut headers = Headers :: new ( ) ;
211
- headers. append ( STATIC_HEADER , "foo0" ) ;
212
- headers. append ( static_header. clone ( ) , "foo1" ) ;
213
- headers. append ( non_static_header. clone ( ) , "foo2" ) ;
216
+ headers. append ( STATIC_HEADER , "foo0" ) . unwrap ( ) ;
217
+ headers. append ( static_header. clone ( ) , "foo1" ) . unwrap ( ) ;
218
+ headers. append ( non_static_header. clone ( ) , "foo2" ) . unwrap ( ) ;
214
219
215
220
assert_eq ! ( headers[ STATIC_HEADER ] , [ "foo0" , "foo1" , "foo2" , ] [ ..] ) ;
216
221
assert_eq ! ( headers[ static_header] , [ "foo0" , "foo1" , "foo2" , ] [ ..] ) ;
@@ -222,23 +227,23 @@ mod tests {
222
227
#[ test]
223
228
fn index_into_headers ( ) {
224
229
let mut headers = Headers :: new ( ) ;
225
- headers. insert ( "hello" , "foo0" ) ;
230
+ headers. insert ( "hello" , "foo0" ) . unwrap ( ) ;
226
231
assert_eq ! ( headers[ "hello" ] , "foo0" ) ;
227
232
assert_eq ! ( headers. get( "hello" ) . unwrap( ) , "foo0" ) ;
228
233
}
229
234
230
235
#[ test]
231
236
fn test_debug_single ( ) {
232
237
let mut headers = Headers :: new ( ) ;
233
- headers. insert ( "single" , "foo0" ) ;
238
+ headers. insert ( "single" , "foo0" ) . unwrap ( ) ;
234
239
assert_eq ! ( format!( "{:?}" , headers) , r#"{"single": "foo0"}"# ) ;
235
240
}
236
241
237
242
#[ test]
238
243
fn test_debug_multiple ( ) {
239
244
let mut headers = Headers :: new ( ) ;
240
- headers. append ( "multi" , "foo0" ) ;
241
- headers. append ( "multi" , "foo1" ) ;
245
+ headers. append ( "multi" , "foo0" ) . unwrap ( ) ;
246
+ headers. append ( "multi" , "foo1" ) . unwrap ( ) ;
242
247
assert_eq ! ( format!( "{:?}" , headers) , r#"{"multi": ["foo0", "foo1"]}"# ) ;
243
248
}
244
249
}
0 commit comments