O que significam identificadores com aspas simples (') em Rust?
Comecei a estudar Rust e frequentemente vejo no código identificadores estranhos começando com aspas simples, como `'a`, `'b` ou `'static`. Eu entendo que não são strings nem caracteres, porque eles aparecem em colchetes angulares após o nome da função ou na definição de structs.\n\nAqui está um exemplo que encontrei na documentação:\n\n```rust\nfn longest<'a>(x: &'a str, y: &'a str) -> &'a str {\n if x.len() > y.len() { x } else { y }\n}\n```\n\nO que é `'a`? Por que ele é necessário? E o que significa `'static`, que vi em alguns exemplos? Parece-me que Rust usa essas notações para algo relacionado à verificação de memória, mas não consigo entender a lógica. Explique, por favor, em palavras simples, como para um iniciante.