@@ -371,7 +371,7 @@ where
371371impl < T , U > FromEnv for std:: borrow:: Cow < ' static , U >
372372where
373373 T : FromEnv ,
374- U : std:: borrow:: ToOwned < Owned = T > + core:: fmt:: Debug ,
374+ U : std:: borrow:: ToOwned < Owned = T > + core:: fmt:: Debug + ? Sized ,
375375{
376376 type Error = T :: Error ;
377377
@@ -538,7 +538,7 @@ where
538538impl < T , U > FromEnvVar for std:: borrow:: Cow < ' static , U >
539539where
540540 T : FromEnvVar ,
541- U : std:: borrow:: ToOwned < Owned = T > + core:: fmt:: Debug ,
541+ U : std:: borrow:: ToOwned < Owned = T > + core:: fmt:: Debug + ? Sized ,
542542{
543543 type Error = T :: Error ;
544544
@@ -639,13 +639,13 @@ impl FromEnvVar for bool {
639639
640640#[ cfg( test) ]
641641mod test {
642- use std:: time:: Duration ;
642+ use std:: { borrow :: Cow , time:: Duration } ;
643643
644644 use super :: * ;
645645
646646 fn set < T > ( env : & str , val : & T )
647647 where
648- T : ToString ,
648+ T : ToString + ? Sized ,
649649 {
650650 std:: env:: set_var ( env, val. to_string ( ) ) ;
651651 }
@@ -720,4 +720,12 @@ mod test {
720720
721721 test_expect_err :: < u8 , _ > ( "U8_" , "" , FromEnvErr :: empty ( "U8_" ) ) ;
722722 }
723+
724+ #[ test]
725+ fn is_cow_str_from_env_var ( ) {
726+ let s = "hello" ;
727+ set ( "COW" , s) ;
728+ let res: Cow < ' static , str > = Cow :: from_env_var ( "COW" ) . unwrap ( ) ;
729+ assert_eq ! ( res, Cow :: <' static , str >:: Owned ( s. to_owned( ) ) ) ;
730+ }
723731}
0 commit comments