Являются ли времена жизни неизбежной вещью, которую мне придется понять и использовать в коде Rust?
Чтобы прочитать существующий код Rust, вы, вероятно, не понимаетене нужно понимать жизни. Средство проверки заимствований понимает их, поэтому, если оно компилируется, они верны, и вы можете просто просмотреть, что делает код.
Я очень не уверен в их правильном использовании.
Самое важное, что нужно понимать в аннотациях на всю жизнь, это то, что они ничего не . Скорее, это способ выразить компилятору связь между ссылками. Например, если вход и выход функции имеют одинаковое время жизни, это означает, что выход содержит ссылку на вход (или его часть) и, следовательно, не может жить дольше, чем вход. Использование их «неправильно» означает, что вы сообщаете компилятору что-то о времени жизни ссылки, что может оказаться неверным - и это даст вам ошибку, поэтому в этом нет ничего опасного!
могу ли я избежать продолжительности жизни в пользу умных указателей?
Вы могли бы отказаться от использования ссылок вообще и использовать Rc
везде. Вы упустите одну из главных особенностей Rust: время жизни и ссылки образуют одну из самых важных абстракций с нулевой стоимостью, которые позволяют Rust быть быстрым и безопасным одновременно. Есть код, написанный на Rust, который никто не будет пытаться писать на C / C ++, потому что человек никогда не может быть абсолютно уверен, что он не представил ошибку памяти. Избегание ссылок Rust в пользу интеллектуальных указателей в основном приведет к более медленному коду, потому что интеллектуальные указатели имеют накладные расходы времени выполнения.
Многие API используют ссылки. Чтобы использовать эти API-интерфейсы, вам необходимо иметь представление о том, что происходит.
Лучший способ понять это просто написать код и понять, что работает, а что нет. Сообщения об ошибках Rust превосходны и очень помогут в формировании этой интуиции.