Я экспериментировал с Rust и обнаружил странность, которую не могу понять. Обычно компилятор запрещает функции возвращать ссылку без продолжительности жизни c (например, String
или &'static str
, но никогда &str
).
Однако этот код скомпилирован и работает:
fn f(_: &Vec<u8>) -> &str {
"Hello, world!"
}
Принимая во внимание, что этот код не:
fn f() -> &str {
"Hello, world!"
}
Почему первая функция работает, когда она возвращает ссылку на пропущенное значение?