LINUX.ORG.RU

История изменений

Исправление 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 может вывести сам.