Я считаю, что это объявление функции сообщает Rust, что время жизни выхода функции совпадает с временем жизни его параметра s
:
fn substr<'a>(s: &'a str, until: u32) -> &'a str;
^^^^
Мне кажется, что компилятор должен знать это только (1):
fn substr(s: &'a str, until: u32) -> &'a str;
Что означает аннотация <'a>
после названия функции? Зачем нужен компилятор и что с ним делать?
(1): Я знаю, что он должен знать еще меньше, из-за пожизненного решения. Но этот вопрос связан с явным определением времени жизни.