fn name(&self) -> &str {
        // no need to clone any more
        &(self.name)
        // &self.name // same as above
    }
// &str => owned by someoe else
// only one copy at the heap
// slightly more efficient
&str => owned by someoe else
only one copy at the heap
slightly more efficient
&str = > owned by someoe else only one copy at the heap slightly more efficient
fn name(&self) -> &str {
        // no need to clone any more
        &(self.name)
        // &self.name // same as above
    }
fn name ( & self ) -> & str { // no need to clone any more & ( self . name ) // &self.name // same as above }
&str => owned by someoe else
only one copy at the heap
slightly more efficient
&str = > owned by someoe else only one copy at the heap slightly more efficient
&self