Skip to content

Instantly share code, notes, and snippets.

@ameernormie
Created March 11, 2020 16:58
Show Gist options
  • Save ameernormie/8f50c6eb44e0fcb89484f5a6928ed73c to your computer and use it in GitHub Desktop.
Save ameernormie/8f50c6eb44e0fcb89484f5a6928ed73c to your computer and use it in GitHub Desktop.
fn main() {
let s = String::from("hello"); // s comes into scope
takes_ownership(s); // s's value moves into the function...
// ... and so is no longer valid here
let x = 5; // x comes into scope
makes_copy(x); // x would move into the function,
// but i32 is Copy, so it’s okay to still
// use x afterward
} // Here, x goes out of scope, then s. But because s's value was moved, nothing
// special happens.
fn takes_ownership(some_string: String) { // some_string comes into scope
println!("{}", some_string);
} // Here, some_string goes out of scope and `drop` is called. The backing
// memory is freed.
fn makes_copy(some_integer: i32) { // some_integer comes into scope
println!("{}", some_integer);
} // Here, some_integer goes out of scope. Nothing special happens.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment