summaryrefslogtreecommitdiff
path: root/exercises/functions/functions5.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/functions/functions5.rs')
-rwxr-xr-xexercises/functions/functions5.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/exercises/functions/functions5.rs b/exercises/functions/functions5.rs
new file mode 100755
index 0000000..d3ff002
--- /dev/null
+++ b/exercises/functions/functions5.rs
@@ -0,0 +1,47 @@
+// functions5.rs
+// 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
+// a value based on its operand, and statements simply return a () type which behaves just like `void` in C/C++ language.
+// We want to return a value of `i32` type from the `square` function, but it is returning a `()` type...
+// They are not the same. There are two solutions:
+// 1. Add a `return` ahead of `num * num;`
+// 2. remove `;`, make it to be `num * num`