英文名称 Dangling point,它还有一个兄弟叫 wild point - 野指针。
简单的对Dangling point
做一个类比:我换手机号码了,但是没有通知老板,老板通讯录存的是我的旧号码。然后老板打电话有两种可能:打不通电话或者电话打通了,但是接电话的人不是我。
下面是代码验证示例,derive
给自定义类型Cereal
声明类型标注,实现的Debug
类型,就可以实现格式化{:?}
的输出。这个用的会比较常见,诸如Clone
、Copy
都可以标注
#[derive(Debug)]
enum Cereal {Barley,Millit,Rice,
}fn main() {let mut grains: Vec<Cereal> = vec![];grains.push(Cereal::Rice);drop(grains);println!("{:?}", grains)
}
当前版本的错误提示输出如下,这里借用的值已经发生了移动,联想一下Rust
没有垃圾回收机制,当move
之后就不能再被访问了。