summaryrefslogtreecommitdiff
path: root/exercises/variables
diff options
context:
space:
mode:
authorolivia <olivia@fastmail.com>2018-11-09 20:31:14 +0100
committerolivia <olivia@fastmail.com>2018-11-09 20:31:14 +0100
commitf7846af7ac388652a6f80a2bbce926ba8f053062 (patch)
tree954ee36257047ac612654c5f35e18ed27deda97f /exercises/variables
parent850a13e9133fedb2fce27884902e0aab94da9692 (diff)
right let's try this one again
Diffstat (limited to 'exercises/variables')
-rwxr-xr-xexercises/variables/variables1.rs42
-rwxr-xr-xexercises/variables/variables2.rs47
-rwxr-xr-xexercises/variables/variables3.rs43
-rwxr-xr-xexercises/variables/variables4.rs45
4 files changed, 177 insertions, 0 deletions
diff --git a/exercises/variables/variables1.rs b/exercises/variables/variables1.rs
new file mode 100755
index 0000000..1cdd270
--- /dev/null
+++ b/exercises/variables/variables1.rs
@@ -0,0 +1,42 @@
+// variables1.rs
+// Make me compile! Scroll down for hints :)
+
+fn main() {
+ x = 5;
+ println!("x has the value {}", x);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// Hint: The declaration on line 5 is missing a keyword that is needed in Rust
+// to create a new variable binding.
diff --git a/exercises/variables/variables2.rs b/exercises/variables/variables2.rs
new file mode 100755
index 0000000..a0b4a37
--- /dev/null
+++ b/exercises/variables/variables2.rs
@@ -0,0 +1,47 @@
+// variables2.rs
+// Make me compile! Scroll down for hints :)
+
+fn main() {
+ let x;
+ if x == 10 {
+ println!("Ten!");
+ } else {
+ println!("Not ten!");
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// The compiler message is saying that Rust cannot infer the type that the
+// variable binding `x` has with what is given here.
+// What happens if you annotate line 5 with a type annotation?
+// What if you give x a value?
+// What if you do both?
+// What type should x be, anyway?
+// What if x is the same type as 10? What if it's a different type?
diff --git a/exercises/variables/variables3.rs b/exercises/variables/variables3.rs
new file mode 100755
index 0000000..165a277
--- /dev/null
+++ b/exercises/variables/variables3.rs
@@ -0,0 +1,43 @@
+// variables3.rs
+// Make me compile! Scroll down for hints :)
+
+fn main() {
+ let x = 3;
+ println!("Number {}", x);
+ x = 5;
+ println!("Number {}", x);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// In Rust, variable bindings are immutable by default. But here we're trying
+// to reassign a different value to x! There's a keyword we can use to make
+// a variable binding mutable instead.
diff --git a/exercises/variables/variables4.rs b/exercises/variables/variables4.rs
new file mode 100755
index 0000000..71ebf0f
--- /dev/null
+++ b/exercises/variables/variables4.rs
@@ -0,0 +1,45 @@
+// variables4.rs
+// Make me compile! Scroll down for hints :)
+
+fn main() {
+ let x: i32;
+ println!("Number {}", x);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// Oops! In this exercise, we have a variable binding that we've created on
+// line 5, and we're trying to use it on line 6, but we haven't given it a
+// value. We can't print out something that isn't there; try giving x a value!
+// This is an error that can cause bugs that's very easy to make in any
+// programming language -- thankfully the Rust compiler has caught this for us!