初始化内存 Initialize Memory
Rust 栈上的变量在被赋值之前是未初始化的, 不能被使用; 直接读取未经初始化的内存会 导致未定义行为 (undefined behavior), 这是不被编译器允许的.
fn main() {
let x: i32;
println!("x: {}", x);
}
同样的, 如果一个值从变量上移走了 (move), 除非这个值实现了 Copy trait, 否则
原先的变量在逻辑上又成了未初始化的了, 尽管实际上它占有的值是没变化的.
以下代码片段里, x
最后是未初始化的, 所以编译器就会在第三行代码报错.
let x = Box::new(42);
let y = x;
println!("x: {:?}", x);