猜谜游戏的问题
extern crate rand;
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main() {
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1, 101);
println!("The secret number is: {}", secret_number);
println!("Please input your guess.");
let mut guess = String::new();
io::stdin().read_line(&mut guess)
.ok()
.expect("failed to read line");
println!("You guessed: {}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => println!("You win!"),
}
}
但是这给了我一个错误:
src\main.rs:26:21: 26:35 error: mismatched types:
expected `&collections::string::String`,
found `&_`
(expected struct `collections::string::String`,
found integral variable) [E0308]
src\main.rs:26 match guess.cmp(&secret_number) {
^~~~~~~~~~~~~~
造成这种情况的原因是什么,我该如何解决?
答案 0 :(得分:0)
来自stdin
的用户输入是一个字符串。您从rand
获得的号码是u32
。尝试在to_string
上使用secret_number
。
match guess.cmp(&secret_number.to_string())