File tree Expand file tree Collapse file tree 1 file changed +22
-5
lines changed Expand file tree Collapse file tree 1 file changed +22
-5
lines changed Original file line number Diff line number Diff line change @@ -2281,11 +2281,28 @@ impl<'de> serde::Deserialize<'de> for Url {
22812281 where
22822282 D : serde:: Deserializer < ' de > ,
22832283 {
2284- use serde:: de:: { Error , Unexpected } ;
2285- let string_representation: String = serde:: Deserialize :: deserialize ( deserializer) ?;
2286- Url :: parse ( & string_representation) . map_err ( |err| {
2287- Error :: invalid_value ( Unexpected :: Str ( & string_representation) , & err. description ( ) )
2288- } )
2284+ use serde:: de:: { Error , Unexpected , Visitor } ;
2285+
2286+ struct UrlVisitor ;
2287+
2288+ impl < ' de > Visitor < ' de > for UrlVisitor {
2289+ type Value = Url ;
2290+
2291+ fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
2292+ formatter. write_str ( "a string representing an URL" )
2293+ }
2294+
2295+ fn visit_str < E > ( self , s : & str ) -> Result < Self :: Value , E >
2296+ where
2297+ E : Error ,
2298+ {
2299+ Url :: parse ( s) . map_err ( |err| {
2300+ Error :: invalid_value ( Unexpected :: Str ( s) , & err. description ( ) )
2301+ } )
2302+ }
2303+ }
2304+
2305+ deserializer. deserialize_str ( UrlVisitor )
22892306 }
22902307}
22912308
You can’t perform that action at this time.
0 commit comments