Hello,
When a variale is mutable, it can be modified. But there is a case, in which the let should be add ahead the mutable variable the second time.
use std::io;
use rand::Rng;
use std::cmp::Ordering;
fn main() {
println!("Guess the number!");
let secret_number=rand::thread_rng().gen_range(1..=100);
//println!("The secreat number is: {secret_number}");
loop{
println!("Please input your guess.");
let mut guess=String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
let guess:u32=match guess.trim().parse(){
Ok(num)=>num,
Err(_)=>continue,
};
println!("You guessed: {guess}");
match guess.cmp(&secret_number){
Ordering::Less=>println!("Too small!"),
Ordering::Greater=>println!("Too big!"),
Ordering::Equal=>{
println!("You win!");
break;
}
}
}
}
Why should add let
in let guess:u32=match guess.trim().parse(){
. The variale of guess
is mutable, so the let
shouldn't be added before guess, which is my opinion that is wrong. May you tell the reason?