我从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
。
此问题是由某些优化引起的吗?为什么优化会导致这种“语法特征”?