@@ -4,18 +4,26 @@ use std::io; // prelude
44fn main ( ) {
55 println ! ( "Guess the number" ) ;
66 let secret_number = rand:: thread_rng ( ) . gen_range ( 1 ..=100 ) ;
7- println ! ( "the secret number is {}" , secret_number) ;
8- println ! ( "Guess a number:" ) ;
9- let mut guess = String :: new ( ) ;
7+ // println!("the secret number is {}", secret_number);
108 // std::io::stdin().read_line(&mut guess).expect("reading error");
11- io:: stdin ( )
12- . read_line ( & mut guess)
13- . expect ( "reading line error" ) ;
14- let guess: u32 = guess. trim ( ) . parse ( ) . expect ( "parse to number error" ) ;
15- println ! ( "the number you guess is {}" , guess) ;
16- match guess. cmp ( & secret_number) {
17- Ordering :: Less => print ! ( "Too small!" ) , // arm
18- Ordering :: Greater => println ! ( "Too big!" ) ,
19- Ordering :: Equal => println ! ( "You win!" ) ,
9+ loop {
10+ println ! ( "Guess a number:" ) ;
11+ let mut guess = String :: new ( ) ;
12+ io:: stdin ( )
13+ . read_line ( & mut guess)
14+ . expect ( "reading line error" ) ;
15+ let guess: u32 = match guess. trim ( ) . parse ( ) {
16+ Ok ( number) => number,
17+ Err ( _) => continue ,
18+ } ;
19+ println ! ( "the number you guess is {}" , guess) ;
20+ match guess. cmp ( & secret_number) {
21+ Ordering :: Less => println ! ( "Too small!" ) , // arm
22+ Ordering :: Greater => println ! ( "Too big!" ) ,
23+ Ordering :: Equal => {
24+ println ! ( "You win!" ) ;
25+ break ;
26+ }
27+ }
2028 }
2129}
0 commit comments