E0597 - Error codes index
Description: Book listing all Rust error codes

# Error code E0597

This error occurs because a value was dropped while it was still borrowed.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    struct Foo<'a> {
        x: Option<&'a u32>,
    }

    let mut x = Foo { x: None };
    {
        let y = 0;
        x.x = Some(&y); // error: `y` does not live long enough
    }
    println!("{:?}", x.x);
    }

Here, `y` is dropped at the end of the inner scope, but it is borrowed by `x` until the `println`. To fix the previous example, just remove the scope so that `y` isn't dropped until after the println

    #![allow(unused)]
    fn main() {
    struct Foo<'a> {
        x: Option<&'a u32>,
    }

    let mut x = Foo { x: None };

    let y = 0;
    x.x = Some(&y);

    println!("{:?}", x.x);
    }