@@ -96,28 +96,29 @@ impl fmt::Display for CacheDirective {
9696}
9797
9898impl FromStr for CacheDirective {
99- fn from_str ( s : & str ) -> Option < CacheDirective > {
99+ type Err = Option < <u32 as FromStr >:: Err > ;
100+ fn from_str ( s : & str ) -> Result < CacheDirective , Option < <u32 as FromStr >:: Err > > {
100101 use self :: CacheDirective :: * ;
101102 match s {
102- "no-cache" => Some ( NoCache ) ,
103- "no-store" => Some ( NoStore ) ,
104- "no-transform" => Some ( NoTransform ) ,
105- "only-if-cached" => Some ( OnlyIfCached ) ,
106- "must-revalidate" => Some ( MustRevalidate ) ,
107- "public" => Some ( Public ) ,
108- "private" => Some ( Private ) ,
109- "proxy-revalidate" => Some ( ProxyRevalidate ) ,
110- "" => None ,
103+ "no-cache" => Ok ( NoCache ) ,
104+ "no-store" => Ok ( NoStore ) ,
105+ "no-transform" => Ok ( NoTransform ) ,
106+ "only-if-cached" => Ok ( OnlyIfCached ) ,
107+ "must-revalidate" => Ok ( MustRevalidate ) ,
108+ "public" => Ok ( Public ) ,
109+ "private" => Ok ( Private ) ,
110+ "proxy-revalidate" => Ok ( ProxyRevalidate ) ,
111+ "" => Err ( None ) ,
111112 _ => match s. find ( '=' ) {
112113 Some ( idx) if idx+1 < s. len ( ) => match ( & s[ ..idx] , & s[ idx+1 ..] . trim_matches ( '"' ) ) {
113- ( "max-age" , secs) => secs. parse ( ) . map ( MaxAge ) ,
114- ( "max-stale" , secs) => secs. parse ( ) . map ( MaxStale ) ,
115- ( "min-fresh" , secs) => secs. parse ( ) . map ( MinFresh ) ,
116- ( "s-maxage" , secs) => secs. parse ( ) . map ( SMaxAge ) ,
117- ( left, right) => Some ( Extension ( left. to_string ( ) , Some ( right. to_string ( ) ) ) )
114+ ( "max-age" , secs) => secs. parse ( ) . map ( MaxAge ) . map_err ( |x| Some ( x ) ) ,
115+ ( "max-stale" , secs) => secs. parse ( ) . map ( MaxStale ) . map_err ( |x| Some ( x ) ) ,
116+ ( "min-fresh" , secs) => secs. parse ( ) . map ( MinFresh ) . map_err ( |x| Some ( x ) ) ,
117+ ( "s-maxage" , secs) => secs. parse ( ) . map ( SMaxAge ) . map_err ( |x| Some ( x ) ) ,
118+ ( left, right) => Ok ( Extension ( left. to_string ( ) , Some ( right. to_string ( ) ) ) )
118119 } ,
119- Some ( _) => None ,
120- None => Some ( Extension ( s. to_string ( ) , None ) )
120+ Some ( _) => Err ( None ) ,
121+ None => Ok ( Extension ( s. to_string ( ) , None ) )
121122 }
122123 }
123124 }
0 commit comments