[[Ownership]] [[Lifetime]] [[Undefined behaviour is caught by the compiler]] [[Variables lives on the stack]] [[To put data on the heap use a Box]] [[Cloning a box does a deep copy of the heap data]] [[Aliasing just means that multiple variables point to the same heap data]] [[A place is anything that is valid to put on the left-hand side of an assignment]] [[Dereferencing is to access the data behind a pointer]] [[Aliasing just means that multiple variables point to the same heap data]] [[Variables are subject to permissions similar to files on linux]] [[References temporarily remove permissions]] [[Creating a reference to a variable is called borrowing]] [[It is illegal to create a mutable reference while an immutable reference is live]] [[Data must outlive any references to it]] [[Move ownership out of the function]] [[Return a static literal]] [[Defer borrow checking to runtime with garbage collection]] [[Provide a slot by the caller]] [[Clone a reference in a function to modify it]] [[Shortening the lifetime of borrowed variables before mutating it]]