1.Lifetimes were redundantly specified in previous version of Rust.
2.Lifetimes are specified when a struct is holding a reference to a value.
3.Lifetimes are specified when certain values must outlive others.
4.Lifetimes are always inferred by the compiler.