bookа:
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
И ниже они в книге пишут: In practice, it means that the lifetime of the reference returned by the longest function is the same as the smaller of the lifetimes of the references passed in..
Если я правильно понял, это переводится как: лайфтайм ссылки, возвращаемой функцией, будет таким же, как наименьший из лайфтаймов её входящих параметров.
Тогда возникает вопрос: если у нас на вход два строковых слайса, один живет 'a, второй живет 'b, первый живет дольше, но мы объявляем один лайфтайм для всех, то как тогда он может быть наименьшим?
Нет, смотри, функция берёт два лайфтайма и превращает их в один - меньший.
Ссылка с большим лайфтаймом автоматически превращается в ссылку с маленьким лайфтаймов
Обсуждают сегодня