我对Rust 还不熟悉,我正在努力学习参考资料是如何工作的.在下面的代码中,当我想计算a1
,也就是i32
时,我不需要go 引用它.但对于b1
,也就是Box
,我必须取消它的引用.
实际上,let a2 = a1 * 2;
和let a3 = *a1 * 2;
的行为相似.看起来在原语中取消引用是可选的,或者编译器隐式地为我们这样做.
fn main(){
let a = 5;
let b = Box::new(10);
let a1 = &a;
let b1 = &b;
println!("{} {}", a1, b1);
let a2 = a1 * 2;
let b2 = (**b1) * 10;
let a3 = *a1 * 2;
println!("{} {} {}", a2, a3, b2);
}
有人能解释一下这个功能吗?