Я новичок в Rust и все еще борюсь с жизнями в Rust. Ниже приведен пример из книги, которую я читаю. Может ли кто-нибудь помочь объяснить, почему автор может получить эту информацию, просто взглянув на подпись функции? У меня уже есть базовые представления о заимствовании, ссылках и т. Д., Но я все еще не могу этого понять.
Например, предположим, что у нас есть функция синтаксического анализа, которая берет кусок байтов и возвращает структуру, содержащую результаты синтаксического анализа:
fn parse_record<'i>(input: &'i [u8]) -> Record<'i> { ... }
Не обращая внимания на определение типа записи, мы можем сказать, что если мы получаем запись от parse_record, любые ссылки, которые она содержит, должны указывать на входной буфер, который мы передали, и нигде больше (кроме, возможно, статических значений) .
'i
. Поскольку Rust запрещает возвращать ссылку на локальную переменную ИRecord
имеет то же время жизни, что иinput
, это должно означать, что все, что находится вRecord
, должно происходить изinput
. - person GrayCat   schedule 21.12.2019Record
должен существовать до тех пор, пока значение в области видимости, которую мы называем'i
, мы получимRecord<'i>
. - person Optimistic Peach   schedule 21.12.2019