@@ -151,7 +151,7 @@ impl<'a> QueryBuilder<'a> {
151151 ///
152152 /// This is useful for boolean flags or markers in query strings that don't require a value.
153153 ///
154- /// Returns `&mut Self` to allow chaining multiple calls.
154+ /// Returns `Self` to allow chaining multiple calls.
155155 ///
156156 /// # Examples
157157 ///
@@ -165,7 +165,7 @@ impl<'a> QueryBuilder<'a> {
165165 /// .build();
166166 /// assert_eq!(url.as_str(), "https://contoso.com/?debug&a=1");
167167 /// ```
168- pub fn append_key_only ( & mut self , key : impl Into < std:: borrow:: Cow < ' a , str > > ) -> & mut Self {
168+ pub fn append_key_only ( mut self , key : impl Into < std:: borrow:: Cow < ' a , str > > ) -> Self {
169169 let key = key. into ( ) ;
170170
171171 if let Some ( ( _, vals) ) = self . values . iter_mut ( ) . find ( |( k, _) | k == & key) {
@@ -186,7 +186,7 @@ impl<'a> QueryBuilder<'a> {
186186 /// `&'a str`, `String`, and `Cow<'a, str>`. This avoids unnecessary allocations when using
187187 /// string literals.
188188 ///
189- /// Returns `&mut Self` to allow chaining multiple calls.
189+ /// Returns `Self` to allow chaining multiple calls.
190190 ///
191191 /// # Examples
192192 ///
@@ -201,10 +201,10 @@ impl<'a> QueryBuilder<'a> {
201201 /// assert_eq!(url.as_str(), "https://contoso.com/?a=1&a=2&b=3");
202202 /// ```
203203 pub fn append_pair (
204- & mut self ,
204+ mut self ,
205205 key : impl Into < std:: borrow:: Cow < ' a , str > > ,
206206 value : impl Into < std:: borrow:: Cow < ' a , str > > ,
207- ) -> & mut Self {
207+ ) -> Self {
208208 let key = key. into ( ) ;
209209 let value = value. into ( ) ;
210210
@@ -227,7 +227,7 @@ impl<'a> QueryBuilder<'a> {
227227 /// `&'a str`, `String`, and `Cow<'a, str>`. This avoids unnecessary allocations when using
228228 /// string literals.
229229 ///
230- /// Returns `&mut Self` to allow chaining multiple calls.
230+ /// Returns `Self` to allow chaining multiple calls.
231231 ///
232232 /// # Examples
233233 ///
@@ -242,10 +242,10 @@ impl<'a> QueryBuilder<'a> {
242242 /// assert_eq!(url.as_str(), "https://contoso.com/?a=new_value&b=2&c=3");
243243 /// ```
244244 pub fn set_pair (
245- & mut self ,
245+ mut self ,
246246 key : impl Into < std:: borrow:: Cow < ' a , str > > ,
247247 value : impl Into < std:: borrow:: Cow < ' a , str > > ,
248- ) -> & mut Self {
248+ ) -> Self {
249249 let key = key. into ( ) ;
250250 let value = value. into ( ) ;
251251
@@ -415,87 +415,74 @@ mod test {
415415 #[ test]
416416 fn test_query_builder_empty_query ( ) {
417417 let mut url = Url :: parse ( "https://contoso.com" ) . unwrap ( ) ;
418- let mut builder = url. query_builder ( ) ;
419- builder. set_pair ( "a" , "1" ) ;
420- builder. build ( ) ;
418+ url. query_builder ( ) . set_pair ( "a" , "1" ) . build ( ) ;
421419 assert_eq ! ( url. as_str( ) , "https://contoso.com/?a=1" ) ;
422420 }
423421
424422 #[ test]
425423 fn test_query_builder_new_parameter ( ) {
426424 let mut url = Url :: parse ( "https://contoso.com?b=2" ) . unwrap ( ) ;
427- let mut builder = url. query_builder ( ) ;
428- builder. set_pair ( "a" , "1" ) ;
429- builder. build ( ) ;
425+ url. query_builder ( ) . set_pair ( "a" , "1" ) . build ( ) ;
430426 assert_eq ! ( url. as_str( ) , "https://contoso.com/?b=2&a=1" ) ;
431427 }
432428
433429 #[ test]
434430 fn test_query_builder_overwrite_existing ( ) {
435431 let mut url = Url :: parse ( "https://contoso.com?a=1&b=2" ) . unwrap ( ) ;
436- let mut builder = url. query_builder ( ) ;
437- builder. set_pair ( "a" , "new_value" ) ;
438- builder. build ( ) ;
432+ url. query_builder ( ) . set_pair ( "a" , "new_value" ) . build ( ) ;
439433 assert_eq ! ( url. as_str( ) , "https://contoso.com/?a=new_value&b=2" ) ;
440434 }
441435
442436 #[ test]
443437 fn test_query_builder_overwrite_duplicate ( ) {
444438 let mut url = Url :: parse ( "https://contoso.com?a=1&b=2&a=3" ) . unwrap ( ) ;
445- let mut builder = url. query_builder ( ) ;
446- builder. set_pair ( "a" , "new_value" ) ;
447- builder. build ( ) ;
439+ url. query_builder ( ) . set_pair ( "a" , "new_value" ) . build ( ) ;
448440 assert_eq ! ( url. as_str( ) , "https://contoso.com/?a=new_value&b=2" ) ;
449441 }
450442
451443 #[ test]
452444 fn test_query_builder_preserves_order ( ) {
453445 let mut url = Url :: parse ( "https://contoso.com?x=1&a=old&y=2&z=3" ) . unwrap ( ) ;
454- let mut builder = url. query_builder ( ) ;
455- builder. set_pair ( "a" , "new" ) ;
456- builder. build ( ) ;
446+ url. query_builder ( ) . set_pair ( "a" , "new" ) . build ( ) ;
457447 assert_eq ! ( url. as_str( ) , "https://contoso.com/?x=1&a=new&y=2&z=3" ) ;
458448 }
459449
460450 #[ test]
461451 fn test_query_builder_with_special_chars ( ) {
462452 let mut url = Url :: parse ( "https://contoso.com?a=old" ) . unwrap ( ) ;
463- let mut builder = url. query_builder ( ) ;
464- builder. set_pair ( "a" , "hello world" ) ;
465- builder. build ( ) ;
453+ url. query_builder ( ) . set_pair ( "a" , "hello world" ) . build ( ) ;
466454 assert_eq ! ( url. as_str( ) , "https://contoso.com/?a=hello+world" ) ;
467455 }
468456
469457 #[ test]
470458 fn test_query_builder_multiple_sets ( ) {
471459 let mut url = Url :: parse ( "https://contoso.com?a=1&b=2" ) . unwrap ( ) ;
472- let mut builder = url. query_builder ( ) ;
473- builder
460+ url. query_builder ( )
474461 . set_pair ( "a" , "new" )
475462 . set_pair ( "c" , "3" )
476- . set_pair ( "b" , "updated" ) ;
477- builder . build ( ) ;
463+ . set_pair ( "b" , "updated" )
464+ . build ( ) ;
478465 assert_eq ! ( url. as_str( ) , "https://contoso.com/?a=new&b=updated&c=3" ) ;
479466 }
480467
481468 #[ test]
482469 fn test_query_builder_with_numeric_value ( ) {
483470 let mut url = Url :: parse ( "https://contoso.com" ) . unwrap ( ) ;
484- let mut builder = url. query_builder ( ) ;
485- builder. set_pair ( "foo" , 1 . to_string ( ) ) . set_pair ( "bar" , "2" ) ;
486- builder. build ( ) ;
471+ url. query_builder ( )
472+ . set_pair ( "foo" , 1 . to_string ( ) )
473+ . set_pair ( "bar" , "2" )
474+ . build ( ) ;
487475 assert_eq ! ( url. as_str( ) , "https://contoso.com/?foo=1&bar=2" ) ;
488476 }
489477
490478 #[ test]
491479 fn test_query_builder_append_key_only ( ) {
492480 let mut url = Url :: parse ( "https://contoso.com" ) . unwrap ( ) ;
493- let mut builder = url. query_builder ( ) ;
494- builder
481+ url. query_builder ( )
495482 . append_key_only ( "debug" )
496483 . append_pair ( "a" , "1" )
497- . append_key_only ( "verbose" ) ;
498- builder . build ( ) ;
484+ . append_key_only ( "verbose" )
485+ . build ( ) ;
499486 assert_eq ! ( url. as_str( ) , "https://contoso.com/?debug&a=1&verbose" ) ;
500487 }
501488}
0 commit comments