1.What fundamental problem do lifetimes exist to prevent in Rust?
2.Under non-lexical lifetimes (NLL), when does a shared borrow let r = &s; actually end?
3.Given let mut s = String::from("hi"); let r = &s;, which ordering makes the code fail to compile?
4.In fn longest<'a>(x: &'a str, y: &'a str) -> &'a str, what does the shared lifetime 'a tell the caller?
5.According to the theory, when must you write explicit lifetime annotations rather than rely on elision?
Answer every question to submit.