Use multiple lifetime parameters by listing them after the function name and annotating each reference with the specific lifetime it belongs to. This tells the compiler which references must outlive which others, allowing you to return a reference tied to one of the inputs.
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
In this example, both parameters share the lifetime 'a. The function returns a reference with lifetime 'a, meaning the returned value is valid for the shorter of the two input lifetimes. This is necessary because the function may return either x or y.