diff --git a/README.md b/README.md index 37c10de..58ab2db 100644 --- a/README.md +++ b/README.md @@ -33,19 +33,20 @@ fn main() { Guessing game ```rust +use std::cmp::Ordering; use simple_std::{prompt, random_int_range}; fn main() { let number = random_int_range(0..100); loop { let input = prompt("Guess: ").parse::().expect("not a number"); - if input < number { - println!("Higher"); - } else if input > number { - println!("Lower"); - } else { - println!("Correct!"); - break; + match input.cmp(&number) { + Ordering::Less => println!("Too Small"), + Ordering::Greater => println!("Too Big"), + Ordering::Equal => { + println!("You win!"); + break; + } } } } diff --git a/src/lib.rs b/src/lib.rs index 9a48398..6a42064 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ //! //! # Example: guessing game //! ``` +//! use std::cmp::Ordering; //! use simple_std::{prompt, random_int_range}; //! //! let number = random_int_range(0..100); @@ -10,17 +11,18 @@ //!# random_int_range(0..100).to_string() //!# } //! let input = prompt("guess: ").parse::().expect("not a number"); -//! if input < number { -//! println!("Higher"); -//! } else if input > number { -//! println!("Lower"); -//! } else { -//! println!("Correct!"); -//! break; +//! match input.cmp(&number) { +//! Ordering::Less => println!("Too Small"), +//! Ordering::Greater => println!("Too Big"), +//! Ordering::Equal => { +//! println!("You win!"); +//! break; +//! } //! } //! } //! ``` + pub use io::{input, prompt}; pub use random::{random_float, random_int_range}; @@ -90,9 +92,9 @@ mod random { /// /// # Why is this not in std? /// - /// Rust aims to be correct, that's why it's major random number library is cryptographically secure, - /// meaning it's randomness can't easily be guessed. And cryptographically secure random number generation - /// is a big task, that's why it has it's own crate. + /// Rust aims to be correct, that's why its major random number library is cryptographically secure, + /// meaning its randomness can't easily be guessed. And cryptographically secure random number generation + /// is a big task, that's why it has its own crate. pub fn random_float() -> f64 { ((random_u64() >> 11) as f64) / ((1u64 << 53) as f64) } @@ -121,7 +123,7 @@ mod random { range.start + ((random_u64() as i32).abs() % difference) } - /// generates a pseudo-random u32 + /// generates a pseudo-random u64 fn random_u64() -> u64 { use std::sync::atomic::{AtomicU64, Ordering};