Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* guessing_game main.rs | Thu, Jul 20, 2017 | Roman S. Collins
- Guessing game from the Rust book with additional
- functionality to learn some Rust following but
- adapting code from the book.
- I added:
- - Code to exit with "quit" or "exit"
- */
- extern crate rand;
- use rand::Rng;
- use std::io;
- use std::cmp::Ordering;
- fn main() {
- println!("Guess the number!");
- let secret_number = rand::thread_rng().gen_range(1, 101);
- loop {
- println!("Please input your guess:");
- let mut guess = String::new();
- io::stdin().read_line(&mut guess)
- .expect("Failed to read line!");
- // Catch "exit" or "quit" before
- // trying to parse guess into
- // a u32
- // Stupid version
- // let ifquit = &guess;
- // match ifquit.trim() {
- // "quit" | "exit" => {
- // println!("Thanks for playing, goodbye!");
- // break;
- // }
- // _ => {}
- // }
- // Better even lazier version
- let ifquit = &guess.trim().to_uppercase();
- if ifquit.contains("QUIT") || ifquit.contains("EXIT") {
- println!("Thanks for playing, goodbye!");
- break;
- }
- // Original from Rust Book
- let guess: u32 = match guess.trim().parse() {
- Ok(num) => num,
- Err(_) => continue,
- };
- // Kinda ew...
- // Add case for "quit" or "exit" with arm
- // let guess: u32 = match guess.trim().parse() {
- // Ok(num) => num,
- // Err(_) if guess.contains("exit") ||
- // guess.contains("quit") => {
- // println!("Thanks for playing, goodbye!");
- // break;
- // }
- // Err(_) => continue,
- // };
- println!("You guessed {}", guess);
- // Needs guess to become a u32
- match guess.cmp(&secret_number) {
- Ordering::Less => println!("Too small!"),
- Ordering::Greater => println!("Too big!"),
- Ordering::Equal => {
- println!("You win!");
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement