@@ -238,16 +238,14 @@ impl<'a> Uri<'a> {
238238
239239impl < ' a > fmt:: Display for Uri < ' a > {
240240 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
241- let uri = if let Some ( auth) = & self . authority {
242- let mut uri = self . inner . to_string ( ) ;
241+ let mut uri = self . inner . to_string ( ) ;
242+
243+ if let Some ( auth) = & self . authority {
243244 let auth = auth. to_string ( ) ;
244245 let start = self . scheme . end + 3 ;
245246
246247 uri. replace_range ( start..( start + auth. len ( ) ) , & auth) ;
247- uri
248- } else {
249- self . inner . to_string ( )
250- } ;
248+ }
251249
252250 write ! ( f, "{}" , uri)
253251 }
@@ -402,8 +400,7 @@ impl<'a> TryFrom<&'a str> for Authority<'a> {
402400 type Error = ParseErr ;
403401
404402 fn try_from ( s : & ' a str ) -> Result < Self , Self :: Error > {
405- let mut username = None ;
406- let mut password = None ;
403+ let ( mut username, mut password) = ( None , None ) ;
407404
408405 let uri_part = if s. contains ( '@' ) {
409406 let ( info, part) = get_chunks ( & s, Some ( RangeC :: new ( 0 , s. len ( ) ) ) , "@" ) ;
@@ -440,17 +437,14 @@ impl<'a> TryFrom<&'a str> for Authority<'a> {
440437
441438impl < ' a > fmt:: Display for Authority < ' a > {
442439 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
443- let auth = if let Some ( pass) = self . password {
444- let range = Range :: from ( pass) ;
440+ let mut auth = self . inner . to_string ( ) ;
445441
442+ if let Some ( pass) = self . password {
443+ let range = Range :: from ( pass) ;
446444 let hidden_pass = "*" . repeat ( range. len ( ) ) ;
447- let mut auth = self . inner . to_string ( ) ;
448- auth. replace_range ( range, & hidden_pass) ;
449445
450- auth
451- } else {
452- self . inner . to_string ( )
453- } ;
446+ auth. replace_range ( range, & hidden_pass) ;
447+ }
454448
455449 write ! ( f, "{}" , auth)
456450 }
@@ -469,28 +463,24 @@ fn get_chunks<'a>(
469463 range : Option < RangeC > ,
470464 separator : & ' a str ,
471465) -> ( Option < RangeC > , Option < RangeC > ) {
472- if let Some ( r) = range {
473- let range = Range :: from ( r) ;
466+ let ( mut before, mut after) = ( None , None ) ;
474467
475- match s[ range. clone ( ) ] . find ( separator) {
468+ if let Some ( range) = range {
469+ match s[ range] . find ( separator) {
476470 Some ( i) => {
477- let mid = r. start + i + separator. len ( ) ;
478- let before = Some ( RangeC :: new ( r. start , mid - 1 ) ) . filter ( |r| r. start != r. end ) ;
479- let after = Some ( RangeC :: new ( mid, r. end ) ) . filter ( |r| r. start != r. end ) ;
480-
481- ( before, after)
471+ let mid = range. start + i + separator. len ( ) ;
472+ before = Some ( RangeC :: new ( range. start , mid - 1 ) ) . filter ( |r| r. start != r. end ) ;
473+ after = Some ( RangeC :: new ( mid, range. end ) ) . filter ( |r| r. start != r. end ) ;
482474 }
483475 None => {
484476 if !s[ range] . is_empty ( ) {
485- ( Some ( r) , None )
486- } else {
487- ( None , None )
477+ before = Some ( range) ;
488478 }
489479 }
490480 }
491- } else {
492- ( None , None )
493481 }
482+
483+ ( before, after)
494484}
495485
496486#[ cfg( test) ]
@@ -718,13 +708,13 @@ mod tests {
718708 . collect ( ) ;
719709
720710 const RESULT : [ & str ; 7 ] = [
721- "/bar/baz?query#fragment" ,
722- "/C:/Users/User/Pictures/screenshot.png" ,
711+ "/bar/baz?query#fragment" ,
712+ "/C:/Users/User/Pictures/screenshot.png" ,
723713 "/wiki/Hypertext_Transfer_Protocol" ,
724- 725- "/" ,
726- "/?query=val" ,
727- "/#fragment"
714+ 715+ "/" ,
716+ "/?query=val" ,
717+ "/#fragment" ,
728718 ] ;
729719
730720 for i in 0 ..RESULT . len ( ) {
0 commit comments