'What are the identifiers denoted with a single apostrophe?

I've encountered a number of types in Rust denoted with a single apostrophe:

'static
'r
'a

What is the significance of that apostrophe? Maybe it's a modifier of references (&)? Generic typing specific to references? I've no idea where the documentation for this is hiding.



Solution 1:[1]

To add to quux00's excellent answer, named lifetimes are also used to indicate the origin of a returned borrowed variable to the rust compiler.

This function

pub fn f(a: &str, b: &str) -> &str {
  b
}

won't compile because it returns a borrowed value but does not specify whether it borrowed it from a or b.

To fix that, you'd declare a named lifetime and use the same lifetime for b and the return type:

pub fn f<'r>(a: &str, b: &'r str) -> &'r str {
//      ----              ---         ---
  b
}

and use it as expected

f("a", "b")

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nino Filiu