A lifetime parameter names a reference’s validity constraint so the compiler can track it through use. In `Dog<'a>`, the `name` reference must remain valid for at least as long as the `Dog`. Lifetime parameters resemble generic parameters in angle-bracket syntax, but they are not the same. String literals have the special `'static` lifetime, which lasts for the program’s duration. section 2.1.5
struct Dog<'a> {
name: &'a str,
}
This struct shows a lifetime parameter attached to a borrowed name. section 2.1.5
