@@ -31,7 +31,7 @@ use HeaderValue;
3131///
3232/// let any_origin = AccessControlAllowOrigin::ANY;
3333/// let null_origin = AccessControlAllowOrigin::NULL;
34- /// let origin = AccessControlAllowOrigin::try_from("http://web-platform.test:8000".to_string() );
34+ /// let origin = AccessControlAllowOrigin::try_from("http://web-platform.test:8000");
3535/// ```
3636#[ derive( Clone , Debug , PartialEq , Eq , Hash ) ]
3737pub struct AccessControlAllowOrigin ( OriginOrAny ) ;
@@ -64,16 +64,26 @@ impl AccessControlAllowOrigin {
6464 }
6565}
6666
67- impl TryFrom < String > for AccessControlAllowOrigin {
67+ impl TryFrom < & str > for AccessControlAllowOrigin {
6868 type Error = :: Error ;
6969
70- fn try_from ( s : String ) -> Result < Self , :: Error > {
71- let header_value = HeaderValue :: from_str ( & s) . map_err ( |_| headers_core :: Error :: invalid ( ) ) ?;
72- let origin = OriginOrAny :: try_from_values ( & mut vec ! [ header_value] . iter ( ) ) ?;
70+ fn try_from ( s : & str ) -> Result < Self , :: Error > {
71+ let header_value = HeaderValue :: from_str ( s) . map_err ( |_| :: Error :: invalid ( ) ) ?;
72+ let origin = OriginOrAny :: try_from ( & header_value) ?;
7373 Ok ( Self ( origin) )
7474 }
7575}
7676
77+ impl TryFrom < & HeaderValue > for OriginOrAny {
78+ type Error = :: Error ;
79+
80+ fn try_from ( header_value : & HeaderValue ) -> Result < Self , :: Error > {
81+ Origin :: try_from_value ( header_value)
82+ . map ( OriginOrAny :: Origin )
83+ . ok_or_else ( :: Error :: invalid)
84+ }
85+ }
86+
7787impl TryFromValues for OriginOrAny {
7888 fn try_from_values < ' i , I > ( values : & mut I ) -> Result < Self , :: Error >
7989 where
@@ -127,7 +137,7 @@ mod tests {
127137 fn try_from_origin ( ) {
128138 let s = "http://web-platform.test:8000" ;
129139
130- let allow_origin = AccessControlAllowOrigin :: try_from ( s. to_string ( ) ) . unwrap ( ) ;
140+ let allow_origin = AccessControlAllowOrigin :: try_from ( s) . unwrap ( ) ;
131141 {
132142 let origin = allow_origin. origin ( ) . unwrap ( ) ;
133143 assert_eq ! ( origin. scheme( ) , "http" ) ;
0 commit comments