2018-02-22 09:09:53 +03:00
|
|
|
// functions5.rs
|
2015-09-19 03:28:27 +03:00
|
|
|
// Make me compile! Scroll down for hints :)
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let answer = square(3);
|
|
|
|
println!("The answer is {}", answer);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn square(num: i32) -> i32 {
|
|
|
|
num * num;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// This is a really common error that can be fixed by removing one character.
|
|
|
|
// It happens because Rust distinguishes between expressions and statements: expressions return
|
2018-10-11 15:03:59 +03:00
|
|
|
// a value based on its operand, and statements simply return a () type which behaves just like `void` in C/C++ language.
|
2018-10-11 11:56:06 +03:00
|
|
|
// We want to return a value of `i32` type from the `square` function, but it is returning a `()` type...
|
2018-10-26 23:22:23 +03:00
|
|
|
// They are not the same. There are two solutions:
|
2018-10-11 11:56:06 +03:00
|
|
|
// 1. Add a `return` ahead of `num * num;`
|
|
|
|
// 2. remove `;`, make it to be `num * num`
|