ситуация при которой возникло бы неопреденное поведение программы типа паник ..краш...итп... ИМХО - ЛТ - это "искуственное" ограничение которое сделали для того что бы недопустить чего, например ?
недопустить к созданию висячих указателей (как я думаю).
Похоже на истину..НО почему же тогда лайфтамы "навязываются" на все типы ? Или это не так ?
на ссылки же вроде только
Ну вот-с. fn sum(a: &i32) -> &i32 { let sum_plus_one = sum + 1; &sum_plus_one } Но ваще-то тут тоже используются лайфтаймы. На самом деле сигнатура так выглядит fn sum<'a> (a: &'a i32) -> &'a i32 {...}
Ссылка на объект, неважно какой тип.
А где в вашем примере в теле функции используется входной параметр А ?
Ой, сорян. Сейчас изменил.
А разве sum_plus_one не станет неопределенным после выхода из тела функции ? Или вы хотите сказать что при помощи лайфтаймов мы заставляем компилятор не "терять" его значение после отработки функции ? Это предназначение ЛТ ?
Ну как раз таки и будет не определенным. Вы же сами попросили привести пример UB. Вот, sum_plus_one является висячим указателям.
Обсуждают сегодня