Явные объявления времени жизни в объектах признаков, содержащихся в структурах

В ответ наэтот вопрос есть обсуждение того, как ссылаться на объекты-признаки, содержащиеся в структурах, для которых требуется следующий синтаксис:

struct Bar<'a> {
    foo: &'a (Foo + 'a),
}

Это заRFC 438

Могу ли я попросить более подробное объяснение декларации о двойном сроке службы? Леванс сказал:

Вы должны указать время жизни два раза: один раз для времени жизни ссылки и один раз для самого объекта признака, потому что признаки могут быть реализованы для ссылок, и если базовый объект является ссылкой, вы должны также указать его время жизни.

Я понимаю понятие жизни для ссылки в структуре. Но я не понимаю, почему жизнь не для объекта, на котором эта черта является чертой. Другими словами, я не знаю, что значит хранить ссылку на черту без ссылки на базовую вещь, для которой она является чертой.

Есть ли случай, когда черта и базовый объект будут иметь разные времена жизни? Что бы значило удерживать ссылку на черту, не держась за основную вещь, на которой она находится?

Если спросить еще один способ, почему Rust не может просто сделать правильную вещь (тм) с:

struct Bar<'a> {
    foo: &'a Foo,
}

где правильная вещь (tm) будет интерпретировать это как эквивалентное объявлению выше?

Извините, что засыпал вопросами, но я чувствовал, что делал что-то довольно простое (использовал черту в качестве общего аспекта), и мне пришлось пройти по кроличьей норе довольно глубоко, и я хотел бы понять, почему кроличья нора так глубоко

Сообщение об ошибке:error: explicit lifetime bound required было решительно бесполезно, потому что уже есть предел жизни.

Ответы на вопрос(1)

Ваш ответ на вопрос