Created
March 11, 2020 17:00
-
-
Save ameernormie/eebf8ec89001b04a1c57d57c55461069 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn main() { | |
let s1 = gives_ownership(); // gives_ownership moves its return | |
// value into s1 | |
let s2 = String::from("hello"); // s2 comes into scope | |
let s3 = takes_and_gives_back(s2); // s2 is moved into | |
// takes_and_gives_back, which also | |
// moves its return value into s3 | |
} // Here, s3 goes out of scope and is dropped. s2 goes out of scope but was | |
// moved, so nothing happens. s1 goes out of scope and is dropped. | |
fn gives_ownership() -> String { // gives_ownership will move its | |
// return value into the function | |
// that calls it | |
let some_string = String::from("hello"); // some_string comes into scope | |
some_string // some_string is returned and | |
// moves out to the calling | |
// function | |
} | |
// takes_and_gives_back will take a String and return one | |
fn takes_and_gives_back(a_string: String) -> String { // a_string comes into | |
// scope | |
a_string // a_string is returned and moves out to the calling function | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment