我正在关注1.1.0的锈书教程,但是尝试运行他们的代码我遇到了错误。
我有以下内容:
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:24:21: 24:35 error: mismatched types:
expected `&collections::string::String`,
found `&_`
(expected struct `collections::string::String`,
found integral variable) [E0308]
src/main.rs:24 match guess.cmp(&secret_number) {
^~~~~~~~~~~~~~
src/main.rs:24:21: 24:35 help: run `rustc --explain E0308` to see a detailed explanation
这段代码直接从教程中复制粘贴,出了什么问题?
答案 0 :(得分:14)
没有错。该教程实际上解释了为什么这不会编译:
但我确实提到过,这还不行。我们来试试吧: ... 呼!这是一个 大错误。它的核心是我们有'不匹配的类型'。鲁斯特 一个强大的静态类型系统。
答案 1 :(得分:3)
您正在尝试比较字符串和整数。您需要先将用户输入转换为整数。
将此行添加到您的代码中,它应该有效:
NSUserDefaults