关于结构体中的声明周期标注

struct Data<'a>
{
    re:&'a int,
}

fn main() {

    let d1 = 0;
    let mut s2 = Data{re:&d1};
    
    {
        let d2 = 0;
        s2.re = &d2;
        println!("{}",s2.re);
    }
    //println!("{}",s2.re);
    
}

上面结构体Data的定义不是要求成员re的存活周期不短于Data实例的存活周期吗?

为什么可以给s2的re赋值为d2的引用呢?

文章来源:

Author:Rust.cc
link:https://rust.cc/article?id=03340d2a-80cc-4b26-9b66-ef0b58bd2d13