@@ -98,10 +98,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
9898 println ! ( "{panic_info}" ) ;
9999 } ) ) ;
100100
101- let matches = match uu_app ( ) . try_get_matches_from ( args) {
102- Ok ( m) => m,
103- Err ( e) => return Err ( e. into ( ) ) ,
104- } ;
101+ let matches = uu_app ( ) . try_get_matches_from ( args) ?;
105102
106103 let mut options = Options :: from ( & matches) ;
107104
@@ -308,12 +305,12 @@ fn more(
308305 rows = number;
309306 }
310307
311- let lines = break_buff ( buff, usize :: from ( cols) ) ;
308+ let lines = break_buff ( buff, cols as usize ) ;
312309
313310 let mut pager = Pager :: new ( rows, lines, next_file, options) ;
314311
315- if options. pattern . is_some ( ) {
316- match search_pattern_in_file ( & pager. lines , & options . pattern ) {
312+ if let Some ( pat ) = options. pattern . as_ref ( ) {
313+ match search_pattern_in_file ( & pager. lines , pat ) {
317314 Some ( number) => pager. upper_mark = number,
318315 None => {
319316 execute ! ( stdout, terminal:: Clear ( terminal:: ClearType :: CurrentLine ) ) ?;
@@ -446,7 +443,7 @@ struct Pager<'a> {
446443 // The current line at the top of the screen
447444 upper_mark : usize ,
448445 // The number of rows that fit on the screen
449- content_rows : u16 ,
446+ content_rows : usize ,
450447 lines : Vec < & ' a str > ,
451448 next_file : Option < & ' a str > ,
452449 line_count : usize ,
@@ -460,7 +457,7 @@ impl<'a> Pager<'a> {
460457 let line_count = lines. len ( ) ;
461458 Self {
462459 upper_mark : options. from_line ,
463- content_rows : rows. saturating_sub ( 1 ) ,
460+ content_rows : rows. saturating_sub ( 1 ) as usize ,
464461 lines,
465462 next_file,
466463 line_count,
@@ -481,21 +478,20 @@ impl<'a> Pager<'a> {
481478 // the upper mark must not grow past top of the screen at the end of the open file.
482479 if self
483480 . upper_mark
484- . saturating_add ( self . content_rows as usize * 2 )
485- . ge ( & self . line_count )
481+ . saturating_add ( self . content_rows * 2 )
482+ >= self . line_count
486483 {
487- self . upper_mark = self . line_count - self . content_rows as usize ;
484+ self . upper_mark = self . line_count - self . content_rows ;
488485 return ;
489486 }
490487
491488 self . upper_mark = self . upper_mark . saturating_add ( self . content_rows . into ( ) ) ;
492489 }
493490
494491 fn page_up ( & mut self ) {
495- let content_row_usize: usize = self . content_rows . into ( ) ;
496492 self . upper_mark = self
497493 . upper_mark
498- . saturating_sub ( content_row_usize . saturating_add ( self . line_squeezed ) ) ;
494+ . saturating_sub ( self . content_rows . saturating_add ( self . line_squeezed ) ) ;
499495
500496 if self . squeeze {
501497 let iter = self . lines . iter ( ) . take ( self . upper_mark ) . rev ( ) ;
@@ -520,7 +516,7 @@ impl<'a> Pager<'a> {
520516 // TODO: Deal with column size changes.
521517 fn page_resize ( & mut self , _: u16 , row : u16 , option_line : Option < u16 > ) {
522518 if option_line. is_none ( ) {
523- self . content_rows = row. saturating_sub ( 1 ) ;
519+ self . content_rows = row. saturating_sub ( 1 ) as usize ;
524520 } ;
525521 }
526522
@@ -541,7 +537,7 @@ impl<'a> Pager<'a> {
541537 let mut displayed_lines = Vec :: new ( ) ;
542538 let mut iter = self . lines . iter ( ) . skip ( self . upper_mark ) ;
543539
544- while displayed_lines. len ( ) < self . content_rows as usize {
540+ while displayed_lines. len ( ) < self . content_rows {
545541 match iter. next ( ) {
546542 Some ( line) => {
547543 if self . squeeze {
@@ -608,13 +604,12 @@ impl<'a> Pager<'a> {
608604 }
609605}
610606
611- fn search_pattern_in_file ( lines : & [ & str ] , pattern : & Option < String > ) -> Option < usize > {
612- let pattern = pattern. clone ( ) . unwrap_or_default ( ) ;
607+ fn search_pattern_in_file ( lines : & [ & str ] , pattern : & str ) -> Option < usize > {
613608 if lines. is_empty ( ) || pattern. is_empty ( ) {
614609 return None ;
615610 }
616611 for ( line_number, line) in lines. iter ( ) . enumerate ( ) {
617- if line. contains ( pattern. as_str ( ) ) {
612+ if line. contains ( pattern) {
618613 return Some ( line_number) ;
619614 }
620615 }
@@ -723,32 +718,32 @@ mod tests {
723718 #[ test]
724719 fn test_search_pattern_empty_lines ( ) {
725720 let lines = vec ! [ ] ;
726- let pattern = Some ( String :: from ( "pattern" ) ) ;
727- assert_eq ! ( None , search_pattern_in_file( & lines, & pattern) ) ;
721+ let pattern = "pattern" ;
722+ assert_eq ! ( None , search_pattern_in_file( & lines, pattern) ) ;
728723 }
729724
730725 #[ test]
731726 fn test_search_pattern_empty_pattern ( ) {
732727 let lines = vec ! [ "line1" , "line2" ] ;
733- let pattern = None ;
734- assert_eq ! ( None , search_pattern_in_file( & lines, & pattern) ) ;
728+ let pattern = "" ;
729+ assert_eq ! ( None , search_pattern_in_file( & lines, pattern) ) ;
735730 }
736731
737732 #[ test]
738733 fn test_search_pattern_found_pattern ( ) {
739734 let lines = vec ! [ "line1" , "line2" , "pattern" ] ;
740735 let lines2 = vec ! [ "line1" , "line2" , "pattern" , "pattern2" ] ;
741736 let lines3 = vec ! [ "line1" , "line2" , "other_pattern" ] ;
742- let pattern = Some ( String :: from ( "pattern" ) ) ;
743- assert_eq ! ( 2 , search_pattern_in_file( & lines, & pattern) . unwrap( ) ) ;
744- assert_eq ! ( 2 , search_pattern_in_file( & lines2, & pattern) . unwrap( ) ) ;
745- assert_eq ! ( 2 , search_pattern_in_file( & lines3, & pattern) . unwrap( ) ) ;
737+ let pattern = "pattern" ;
738+ assert_eq ! ( 2 , search_pattern_in_file( & lines, pattern) . unwrap( ) ) ;
739+ assert_eq ! ( 2 , search_pattern_in_file( & lines2, pattern) . unwrap( ) ) ;
740+ assert_eq ! ( 2 , search_pattern_in_file( & lines3, pattern) . unwrap( ) ) ;
746741 }
747742
748743 #[ test]
749744 fn test_search_pattern_not_found_pattern ( ) {
750745 let lines = vec ! [ "line1" , "line2" , "something" ] ;
751- let pattern = Some ( String :: from ( "pattern" ) ) ;
752- assert_eq ! ( None , search_pattern_in_file( & lines, & pattern) ) ;
746+ let pattern = "pattern" ;
747+ assert_eq ! ( None , search_pattern_in_file( & lines, pattern) ) ;
753748 }
754749}
0 commit comments