为什么我可以返回寿命不够长的值的引用?

时间:2019-04-15 05:46:51

标签: rust

我从some函数返回一个临时值的引用。我不希望它能成功编译,但是,我没有收到警告或错误,并且程序运行良好。

struct A {
    pub a: i32,
}

fn main() {
    let b = A { a: 5 };
    let a = some(&b);
    println!("{}", a.a);
}

fn some(_: &A) -> &A {
    &A { a: 14 }
}

impl Drop for A或返回&mut A将导致该程序无法编译。 我正在使用rustc 1.35.0-nightly

此问题是由某些优化引起的吗?为什么优化会导致这种“语法特征”?

0 个答案:

没有答案