【发布时间】:2019-12-30 11:46:06
【问题描述】:
我想知道是否有人可以帮助我理解为什么这个程序会这样:
fn main() {
let mut x = 456;
{
let mut y = Box::new(&x);
y = Box::new(&mut y);
println!("GOT {}",*y);
}
}
此程序在 rust 1.35.0(2015 和 2018 版本)下编译,并打印
GOT 456
但是,我很困惑这里发生了什么。我猜这是自动取消引用的一个例子。所以,实际上,它看起来像这样:
fn main() {
let mut x = 456;
{
let mut y = Box::new(&x);
y = Box::new(&mut *y);
println!("GOT {}",*y);
}
}
是吗?
【问题讨论】: