Изучаю время жизни, дан такой пример, он конечно не скомпилируется, но суть не в этом:
fn longest<'a, 'b>(x: &'a str, y: &'b str) -> &str {
Если брать функцию с дженериком example, то тип возвращаемого значения можно представить как:
let e: u32 = example();
// или
let e = example::<u32>();
Здесь понятно, что тип дженерика дальше можно передать в параметры и куда угодно по нужде:
fn example<T>(a: &T) -> &T;
То есть тип переменной неявно попадает в дженерик или мы передаем его через ::.
Но почему тот-же синтаксис используется для времён жизни?
Откуда они берутся?
По логике выше в 'a и 'b попадает время жизни переменной которая вызывает функцию, пока очень непонятно.
Или время жизни берётся из области видимости и снова непонятно, каким образом?
Почему-то в книге мало информации на этот счёт, как минимум в текущей главе, как и в главе про обобщённые типы не было указано что тип передаётся указанными выше способами.