I'm following the rust book tutorial for 1.1.0, but trying to run their code I'm getting an error .
I have the following:
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!"),
}
}
upon running this I get
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
This code is directly copy pasted from the tutorial, what's wrong?
Nothing is wrong. The tutorial actually explains why this won't compile:
I did mention that this won’t quite work yet, though. Let’s try it: ... Whew! This is a big error. The core of it is that we have ‘mismatched types’. Rust has a strong, static type system.
You are trying to compare string and integer. You need to cast user input to integer first.
Add this line to your code and it should work:
let guess: u32 = guess.trim().parse().unwrap();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With