Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 2.20 KB | None | 0 0
  1. /* guessing_game main.rs | Thu, Jul 20, 2017 | Roman S. Collins
  2.  
  3.     Guessing game from the Rust book with additional
  4.     functionality to learn some Rust following but
  5.     adapting code from the book.
  6.  
  7.     I added:
  8.     - Code to exit with "quit" or "exit"
  9. */
  10. extern crate rand;
  11.  
  12. use rand::Rng;
  13. use std::io;
  14. use std::cmp::Ordering;
  15.  
  16. fn main() {
  17.     println!("Guess the number!");
  18.  
  19.     let secret_number = rand::thread_rng().gen_range(1, 101);
  20.  
  21.     loop {
  22.         println!("Please input your guess:");
  23.  
  24.         let mut guess = String::new();
  25.  
  26.         io::stdin().read_line(&mut guess)
  27.             .expect("Failed to read line!");
  28.  
  29.         // Catch "exit" or "quit" before
  30.         // trying to parse guess into
  31.         // a u32
  32.         // Stupid version
  33.         // let ifquit = &guess;
  34.         // match ifquit.trim() {
  35.         //     "quit" | "exit" => {
  36.         //         println!("Thanks for playing, goodbye!");
  37.         //         break;
  38.         //     }
  39.         //     _ => {}
  40.         // }
  41.  
  42.         // Better even lazier version
  43.         let ifquit = &guess.trim().to_uppercase();
  44.         if ifquit.contains("QUIT") || ifquit.contains("EXIT") {
  45.             println!("Thanks for playing, goodbye!");
  46.             break;
  47.         }
  48.  
  49.         // Original from Rust Book
  50.         let guess: u32 = match guess.trim().parse() {
  51.             Ok(num) => num,
  52.             Err(_) => continue,
  53.         };
  54.  
  55.         // Kinda ew...
  56.         // Add case for "quit" or "exit" with arm
  57.         // let guess: u32 = match guess.trim().parse() {
  58.         //     Ok(num) => num,
  59.         //     Err(_) if guess.contains("exit") ||
  60.         //         guess.contains("quit") => {
  61.         //             println!("Thanks for playing, goodbye!");
  62.         //             break;
  63.         //     }
  64.         //     Err(_) => continue,
  65.         // };
  66.  
  67.         println!("You guessed {}", guess);
  68.  
  69.         // Needs guess to become a u32
  70.         match guess.cmp(&secret_number) {
  71.             Ordering::Less => println!("Too small!"),
  72.             Ordering::Greater => println!("Too big!"),
  73.             Ordering::Equal => {
  74.                 println!("You win!");
  75.                 break;
  76.             }
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement