Declaraciones explícitas de por vida en objetos de rasgos mantenidos por estructuras

En la respuesta aesta pregunta Hay una discusión sobre cómo referirse a los objetos de rasgo mantenidos por estructuras que requiere la siguiente sintaxis:

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

Esto es porRFC 438

¿Podría pedir más explicaciones sobre la declaración de doble vida útil? Levans dijo:

Debe especificar la vida útil dos veces: una para la vida útil de la referencia, y otra para el objeto de rasgo en sí mismo, porque los rasgos se pueden implementar para referencias, y si el objeto subyacente es una referencia, también debe especificar su vida útil.

Entiendo la noción de toda una vida para la referencia en la estructura. Pero no entiendo por qué la vida útil no es para el objeto en el que el rasgo es un rasgo. Dicho de otra manera, no sé lo que significa tener una referencia para un rasgo sin tener una referencia al elemento subyacente para el que es un rasgo.

¿Hay algún caso en el que el rasgo y el objeto subyacente tengan vidas diferentes? ¿Qué significaría aferrarse a una referencia a un rasgo sin aferrarse a la cosa subyacente en la que se encuentra el rasgo?

Preguntando de otra manera, ¿por qué Rust no puede hacer The Right Thing (tm) con:

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

donde The Right Thing (tm) sería interpretar eso como equivalente a la declaración anterior?

Lamento bombardear con preguntas, pero sentí que estaba haciendo algo bastante básico (usar un rasgo como faceta genérica), y tuve que bajar por la madriguera del conejo bastante profundo, y me gustaría entender por qué la madriguera del conejo es tan profundo

El mensaje de error:error: explicit lifetime bound required fue decididamente inútil, porque ya hay un límite de por vida.

Respuestas a la pregunta(1)

Su respuesta a la pregunta