summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Aries <73198738+Kallu-A@users.noreply.github.com>2022-03-29 15:02:35 +0200
committerGitHub <noreply@github.com>2022-03-29 15:02:35 +0200
commit3f0e1303e0b3bf3fecc0baced3c8b8a37f83c184 (patch)
tree5fd70bd85708226cb63f0c7c442db577a0adf08f
parentc80ad089fd22a69d4d779923163cde5d733f6a02 (diff)
feat: Add move_semantics6.rs exercise (#908)
-rw-r--r--exercises/move_semantics/move_semantics6.rs25
-rw-r--r--info.toml15
2 files changed, 40 insertions, 0 deletions
diff --git a/exercises/move_semantics/move_semantics6.rs b/exercises/move_semantics/move_semantics6.rs
new file mode 100644
index 0000000..457e7ae
--- /dev/null
+++ b/exercises/move_semantics/move_semantics6.rs
@@ -0,0 +1,25 @@
+// move_semantics6.rs
+// Make me compile! `rustlings hint move_semantics6` for hints
+// You can't change anything except adding or removing references
+
+// I AM NOT DONE
+
+fn main() {
+ let data = "Rust is great!".to_string();
+
+ get_char(data);
+
+ string_uppercase(&data);
+}
+
+// Should not take ownership
+fn get_char(data: String) -> char {
+ data.chars().last().unwrap()
+}
+
+// Should take ownership
+fn string_uppercase(mut data: &String) {
+ data = &data.to_uppercase();
+
+ println!("{}", data);
+}
diff --git a/info.toml b/info.toml
index fbe0d53..9430a16 100644
--- a/info.toml
+++ b/info.toml
@@ -237,6 +237,21 @@ in the book's section References and Borrowing':
https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#mutable-references.
"""
+[[exercises]]
+name = "move_semantics6"
+path = "exercises/move_semantics/move_semantics6.rs"
+mode = "compile"
+hint = """
+To find the answer, you can consult the book section "References and Borrowing":
+https://doc.rust-lang.org/stable/book/ch04-02-references-and-borrowing.html
+The first problem is that `get_char` is taking ownership of the string.
+So `data` is moved and can't be used for `string_uppercase`
+`data` is moved to `get_char` first, meaning that `string_uppercase` cannot manipulate the data.
+Once you've fixed that, `string_uppercase`'s function signature will also need to be adjusted.
+Can you figure out how?
+
+Another hint: it has to do with the `&` character."""
+
# PRIMITIVE TYPES
[[exercises]]