feat: Add move_semantics6.rs exercise (#908)
This commit is contained in:
parent
c80ad089fd
commit
3f0e1303e0
25
exercises/move_semantics/move_semantics6.rs
Normal file
25
exercises/move_semantics/move_semantics6.rs
Normal file
@ -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);
|
||||||
|
}
|
15
info.toml
15
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.
|
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
|
# PRIMITIVE TYPES
|
||||||
|
|
||||||
[[exercises]]
|
[[exercises]]
|
||||||
|
Reference in New Issue
Block a user