¿Por qué se necesitan vidas explícitas en Rust?

Estaba leyendo elcapítulo de vidas del libro Rust, y me encontré con este ejemplo para una vida nombrada / explícita:

struct Foo<'a> {
    x: &'a i32,
}

fn main() {
    let x;                    // -+ x goes into scope
                              //  |
    {                         //  |
        let y = &5;           // ---+ y goes into scope
        let f = Foo { x: y }; // ---+ f goes into scope
        x = &f.x;             //  | | error here
    }                         // ---+ f and y go out of scope
                              //  |
    println!("{}", x);        //  |
}                             // -+ x goes out of scope

Para mí es bastante claro que el error que el compilador previene es ellibre de uso de la referencia asignada ax: después de que se hace el alcance interno,f y por lo tanto&f.x dejar de ser válido y no debería haber sido asignado ax.

Mi problema es que el problema podría haberse analizado fácilmentesin utilizando laexplícito 'a de por vida, por ejemplo, al inferir una asignación ilegal de una referencia a un alcance más amplio (x = &f.x;)

¿En qué casos se necesitan vidas explícitas para evitar errores de uso libre (o alguna otra clase)?

Respuestas a la pregunta(9)

Su respuesta a la pregunta