11use http:: { HeaderName , HeaderValue } ;
2+ use std:: iter:: FromIterator ;
23
34use crate :: util:: FlatCsv ;
45
@@ -59,6 +60,15 @@ impl From<HeaderName> for Vary {
5960 }
6061}
6162
63+ impl FromIterator < HeaderName > for Vary {
64+ fn from_iter < I > ( iter : I ) -> Self
65+ where
66+ I : IntoIterator < Item = HeaderName > ,
67+ {
68+ Vary ( iter. into_iter ( ) . map ( HeaderValue :: from) . collect ( ) )
69+ }
70+ }
71+
6272/*
6373test_vary {
6474 test_header!(test1, vec![b"accept-encoding, accept-language"]);
@@ -80,10 +90,34 @@ test_vary {
8090
8191#[ cfg( test) ]
8292mod tests {
93+ use http:: header:: { ACCEPT_ENCODING , ACCEPT_LANGUAGE } ;
94+
8395 use super :: * ;
8496
8597 #[ test]
8698 fn any_is_any ( ) {
8799 assert ! ( Vary :: any( ) . is_any( ) ) ;
88100 }
101+
102+ #[ test]
103+ fn from_header_name ( ) {
104+ let vary = Vary :: from ( ACCEPT_ENCODING ) ;
105+
106+ assert ! ( !vary. is_any( ) ) ;
107+ assert_eq ! (
108+ vary. iter_strs( ) . collect:: <Vec <_>>( ) ,
109+ vec![ ACCEPT_ENCODING . as_str( ) ]
110+ ) ;
111+ }
112+
113+ #[ test]
114+ fn from_iter_header_name ( ) {
115+ let vary = Vary :: from_iter ( [ ACCEPT_ENCODING , ACCEPT_LANGUAGE ] ) ;
116+
117+ assert ! ( !vary. is_any( ) ) ;
118+ assert_eq ! (
119+ vary. iter_strs( ) . collect:: <Vec <_>>( ) ,
120+ vec![ ACCEPT_ENCODING . as_str( ) , ACCEPT_LANGUAGE . as_str( ) ]
121+ ) ;
122+ }
89123}
0 commit comments