Я имею в виду что-то вроде:
fn minimum<'a, 'b>(x: &'a mut i32, y: &'b mut i32) -> &'min(a, b) mut i32 {
(x < y) ? x : y
}
Мы не знаем, какая ссылка будет выбрана при жизни, но компилятор знает, в какой области обе ссылки все еще действительны, и возвращенную ссылку можно безопасно использовать.
Обходной путь, который можно упомянуть:
fn minimum<'a, 'b> where 'b: 'a (x: &'a i32, y: 'b i32) -> &'a i32 {
(x < y) ? x : y
}
на самом деле не является решением, потому что при вызове функции мы должны обрабатывать оба случая: когда 'a: 'b
и 'b: 'a