Ownership

Every resource is given a name when we make a binding to it with let; in Rust speak we say that the resource gets an owner. For example, in the following code snippet klaatu owns the piece of memory taken up by the Alien struct instance:

// see code in Chapter 7/code/ownership1.rs   
struct Alien { 
    planet: String, 
    n_tentacles: u32 
} 
 
fn main() { 
    let mut klaatu = Alien{ planet: "Venus".to_string(),  
    n_tentacles: 15 }; 
} 

Only the owner can change the object it points to, and there can only be one owner at a time, because the owner is also responsible for freeing the object's resources. This makes sense; if an object could have many owners, its resources could be freed more than once, which would lead to problems. When the owner's lifetime has passed, the compiler frees the memory automatically.