Closed
Description
If I take the following line from the Rust book and make a function out of it
let secret_number = rand::thread_rng().gen_range(1, 101);
Meaning something like
let secret_number = generate_secret_number() ;
// ...
fn generate_secret_number() -> u32 {
rand::thread_rng().gen_range(1, 101);
}
Then the compiler fails with
src/main.rs:41:1: 45:2 error: not all control paths return a value [E0269]
src/main.rs:41 fn generate_secret_number() -> u32 {
src/main.rs:42 rand::thread_rng().gen_range(1, 101);
src/main.rs:43 }
src/main.rs:41:1: 43:2 help: run `rustc --explain E0269` to see a detailed explanation
error: aborting due to previous error
Could not compile `guessing_game`.
However if I add the return statement, which should be optional. It works
let secret_number = generate_secret_number() ;
// ...
fn generate_secret_number() -> u32 {
return rand::thread_rng().rnd.gen_range(1, 101);
}
Shouldn't this be considered an expression by the compiler?