File tree 3 files changed +16
-6
lines changed
3 files changed +16
-6
lines changed Original file line number Diff line number Diff line change 2
2
3
3
name = " url"
4
4
# When updating version, also modify html_root_url in the lib.rs
5
- version = " 1.7.0 "
5
+ version = " 1.7.1 "
6
6
authors = [" The rust-url developers" ]
7
7
8
8
description = " URL library for Rust, based on the WHATWG URL Standard"
Original file line number Diff line number Diff line change @@ -257,8 +257,16 @@ impl<'a> Target for &'a mut String {
257
257
// * `Serializer` keeps its target in a private field
258
258
// * Unlike in other `Target` impls, `UrlQuery::finished` does not return `Self`.
259
259
impl < ' a > Target for :: UrlQuery < ' a > {
260
- fn as_mut_string ( & mut self ) -> & mut String { & mut self . url . serialization }
261
- fn finish ( self ) -> & ' a mut :: Url { self . url }
260
+ fn as_mut_string ( & mut self ) -> & mut String {
261
+ & mut self . url . as_mut ( ) . unwrap ( ) . serialization
262
+ }
263
+
264
+ fn finish ( mut self ) -> & ' a mut :: Url {
265
+ let url = self . url . take ( ) . unwrap ( ) ;
266
+ url. restore_already_parsed_fragment ( self . fragment . take ( ) ) ;
267
+ url
268
+ }
269
+
262
270
type Finished = & ' a mut :: Url ;
263
271
}
264
272
Original file line number Diff line number Diff line change @@ -1343,7 +1343,7 @@ impl Url {
1343
1343
self . serialization . push ( '?' ) ;
1344
1344
}
1345
1345
1346
- let query = UrlQuery { url : self , fragment : fragment } ;
1346
+ let query = UrlQuery { url : Some ( self ) , fragment : fragment } ;
1347
1347
form_urlencoded:: Serializer :: for_suffix ( query, query_start + "?" . len ( ) )
1348
1348
}
1349
1349
@@ -2423,13 +2423,15 @@ fn io_error<T>(reason: &str) -> io::Result<T> {
2423
2423
/// Implementation detail of `Url::query_pairs_mut`. Typically not used directly.
2424
2424
#[ derive( Debug ) ]
2425
2425
pub struct UrlQuery < ' a > {
2426
- url : & ' a mut Url ,
2426
+ url : Option < & ' a mut Url > ,
2427
2427
fragment : Option < String > ,
2428
2428
}
2429
2429
2430
2430
impl < ' a > Drop for UrlQuery < ' a > {
2431
2431
fn drop ( & mut self ) {
2432
- self . url . restore_already_parsed_fragment ( self . fragment . take ( ) )
2432
+ if let Some ( url) = self . url . take ( ) {
2433
+ url. restore_already_parsed_fragment ( self . fragment . take ( ) )
2434
+ }
2433
2435
}
2434
2436
}
2435
2437
You can’t perform that action at this time.
0 commit comments