Ответ 1
Нет, сроки жизни никак не влияют на сгенерированный машинный код. В конце концов, все это "просто указывает" на скомпилированный код.
Поскольку мы - люди, говорящие на человеческом языке, мы склонны объединять два разных, но взаимосвязанных понятия: конкретные времена жизни и общие параметры жизни.
Все языки программирования имеют конкретные сроки жизни. Это просто соответствует тому, когда будет выпущен ресурс. Что показывает ваш пример и действительно, С++ работает так же, как и Rust. Это часто называют инициализацией сбора ресурсов (RAII). У собранных мусором языков также есть время жизни, но им может быть сложнее прибить их, когда они заканчиваются.
То, что делает Rust опрятным в этой области, это общие параметры времени жизни, вещи, которые мы знаем как 'a
или 'static
. Это позволяет компилятору отслеживать базовые указатели, чтобы программисту не нужно было беспокоиться, если указатель останется действительным достаточно долго. Это работает для хранения ссылок в структурах и передачи их в и из функций.