@@ -2028,7 +2028,7 @@ impl Url {
2028
2028
/// This method is only available if the `serde` Cargo feature is enabled.
2029
2029
#[ cfg( feature = "serde" ) ]
2030
2030
#[ deny( unused) ]
2031
- pub fn serialize_internal < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error > where S : serde:: Serializer {
2031
+ pub fn serialize_internal < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > where S : serde:: Serializer {
2032
2032
use serde:: Serialize ;
2033
2033
// Destructuring first lets us ensure that adding or removing fields forces this method
2034
2034
// to be updated
@@ -2050,8 +2050,8 @@ impl Url {
2050
2050
/// This method is only available if the `serde` Cargo feature is enabled.
2051
2051
#[ cfg( feature = "serde" ) ]
2052
2052
#[ deny( unused) ]
2053
- pub fn deserialize_internal < D > ( deserializer : & mut D ) -> Result < Self , D :: Error > where D : serde:: Deserializer {
2054
- use serde:: { Deserialize , Error } ;
2053
+ pub fn deserialize_internal < ' de , D > ( deserializer : D ) -> Result < Self , D :: Error > where D : serde:: Deserializer < ' de > {
2054
+ use serde:: de :: { Deserialize , Error , Unexpected } ;
2055
2055
let ( serialization, scheme_end, username_end,
2056
2056
host_start, host_end, host, port, path_start,
2057
2057
query_start, fragment_start) = Deserialize :: deserialize ( deserializer) ?;
@@ -2068,7 +2068,10 @@ impl Url {
2068
2068
fragment_start : fragment_start
2069
2069
} ;
2070
2070
if cfg ! ( debug_assertions) {
2071
- url. check_invariants ( ) . map_err ( |ref reason| Error :: invalid_value ( & reason) ) ?
2071
+ url. check_invariants ( ) . map_err ( |reason| {
2072
+ let reason: & str = & reason;
2073
+ Error :: invalid_value ( Unexpected :: Other ( "value" ) , & reason)
2074
+ } ) ?
2072
2075
}
2073
2076
Ok ( url)
2074
2077
}
@@ -2230,7 +2233,7 @@ impl RangeArg for RangeTo<u32> {
2230
2233
/// This implementation is only available if the `serde` Cargo feature is enabled.
2231
2234
#[ cfg( feature="serde" ) ]
2232
2235
impl serde:: Serialize for Url {
2233
- fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error > where S : serde:: Serializer {
2236
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > where S : serde:: Serializer {
2234
2237
serializer. serialize_str ( self . as_str ( ) )
2235
2238
}
2236
2239
}
@@ -2239,11 +2242,12 @@ impl serde::Serialize for Url {
2239
2242
///
2240
2243
/// This implementation is only available if the `serde` Cargo feature is enabled.
2241
2244
#[ cfg( feature="serde" ) ]
2242
- impl serde:: Deserialize for Url {
2243
- fn deserialize < D > ( deserializer : & mut D ) -> Result < Url , D :: Error > where D : serde:: Deserializer {
2245
+ impl < ' de > serde:: Deserialize < ' de > for Url {
2246
+ fn deserialize < D > ( deserializer : D ) -> Result < Url , D :: Error > where D : serde:: Deserializer < ' de > {
2247
+ use serde:: de:: { Unexpected , Error } ;
2244
2248
let string_representation: String = serde:: Deserialize :: deserialize ( deserializer) ?;
2245
2249
Url :: parse ( & string_representation) . map_err ( |err| {
2246
- serde :: Error :: invalid_value ( err. description ( ) )
2250
+ Error :: invalid_value ( Unexpected :: Str ( & string_representation ) , & err. description ( ) )
2247
2251
} )
2248
2252
}
2249
2253
}
0 commit comments