лайфтайм 'c зависящий от этих двух. чтобы прописать такую зависимость нужно писать
'c: 'a + 'b
или
'a: 'c, 'b: 'c
?
Второй пример же совершенно про другое
А откуда этот третий лайфтайм берётся?
fn foo(&'a T, &'b U) -> Bar<'c>
Как он в Bar попадает? По-моему, тут только три варианта 'a, 'b -> 'a, 'a, 'b -> 'b, и 'a, 'a -> 'a
fn f(x: &str, y; &str) -> &str { if rand() { x } else { y } }
fn f(x: &'a X, y: &'b Y) -> Pin<Box<dyn Future + 'c>> { Box::pin(async move { x; y; }) }
Третий вариант. 'a, 'a -> 'a. Какие-то сложности могут быть только с инвариантными лайфтаймами, но здесь их нет
Обсуждают сегодня