¿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&nbsp;de la referencia asignada ax: después de que se hace el alcance interno,f&nbsp;y por lo tanto&f.x&nbsp;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&nbsp;utilizando laexplícito 'a&nbsp;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)?