extern crate rand;//这一步的时候要在dependencies中添加rand的版本,此刻需要注意
//如果rand = "0.3.0"代表任何兼容0.3.0的版本,如果想要使用某
//个特定版本的rand应该输入rand = "=0.3.0"
use std::io;
use rand::Rng; //我们一会将要使用一个方法,并且它要求 Rng 在作用域中才能工作
//简单理解,函数必须在Rng的作用域下才能运作
use std::cmp::Ordering;
fn main()
{
println!("Let's begin to start a game , guess a number between 1 and 100.");
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1,101);
//随机产生1-100的数字,gen_range包括左不包括右
//我们用 rand::thread_rng() 函数来获取一个随机数生成器的拷贝
loop
{
println!("Please input your guess!");
let mut guess = String::new();
//mut产生了new一个可变参数guess同时赋予String空间
io::stdin().read_line(&mut guess).expect("Failed to readline");
//.expect类似于try....except....即无法读取的话会显示Failed to readline
let guess:u32 = match guess.trim().parse()
//String 的 trim() 方法会去掉我们字符串开头和结尾的任何空格
{
Ok(num) => num,
Err(_) =>
{
println!("Just input a number!!");
continue;
}
};
println!("Your guessed:{}",guess);
match guess.cmp(&secret_number)
{
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal =>
{
println!("You win!");
break;
}
}
}
}