summaryrefslogtreecommitdiff
path: root/exercises/06_move_semantics/move_semantics5.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/06_move_semantics/move_semantics5.rs')
-rw-r--r--exercises/06_move_semantics/move_semantics5.rs31
1 files changed, 16 insertions, 15 deletions
diff --git a/exercises/06_move_semantics/move_semantics5.rs b/exercises/06_move_semantics/move_semantics5.rs
index b34560a..c9edf41 100644
--- a/exercises/06_move_semantics/move_semantics5.rs
+++ b/exercises/06_move_semantics/move_semantics5.rs
@@ -1,21 +1,22 @@
-// Make me compile only by reordering the lines in the test, but without adding,
-// changing or removing any of them.
+// TODO: Fix the compiler erros. Don't change anything except adding or removing
+// references (the character `&`).
fn main() {
- // You can optionally experiment here.
+ let data = "Rust is great!".to_string();
+
+ get_char(data);
+
+ string_uppercase(&data);
+}
+
+// Shouldn't take ownership
+fn get_char(data: String) -> char {
+ data.chars().last().unwrap()
}
-#[cfg(test)]
-mod tests {
- use super::*;
+// Should take ownership
+fn string_uppercase(mut data: &String) {
+ data = &data.to_uppercase();
- #[test]
- fn move_semantics5() {
- let mut x = 100;
- let y = &mut x;
- let z = &mut x;
- *y += 100;
- *z += 1000;
- assert_eq!(x, 1200);
- }
+ println!("{data}");
}