История изменений
Исправление mersinvald, (текущая версия) :
Утащил в вопросы для собеседования: простой, но хороший, с подвохом из-за кажущейся неправильности последнего блока.
Ошибка во втором блоке: анонимный лайфтайм для возвращаемого значения привяжется к тому же лайфтайму что и self, что является сабсетом лайфтайма 'a. Таким образом использование метода get невозможно в функциях поглощающих значение А, так как ссылка полученная через get не может пережить уничтожение объекта.
Надо
impl<'a> A<'a> {
fn get(&self) -> &'a i32 {
self.x
}
}
А в последнем блоке — тривиальный лайфтайм, который Rust может вывести сам.
Исходная версия mersinvald, :
Утащил в вопросы для собеседования: простой, но хороший.
Ошибка во втором блоке: анонимный лайфтайм для возвращаемого значения привяжется к тому же лайфтайму что и self, что является сабсетом лайфтайма 'a. Таким образом использование метода get невозможно в функциях поглощающих значение А, так как ссылка полученная через get не может пережить уничтожение объекта.
Надо
impl<'a> A<'a> {
fn get(&self) -> &'a i32 {
self.x
}
}
А в последнем блоке — тривиальный лайфтайм, который Rust может вывести сам.