【发布时间】:2015-03-24 21:58:38
【问题描述】:
我是 Rust 的新手,正在尝试了解引用的工作原理。在下面的代码中,当我想对 a1(即 i32)进行计算时,我不必取消引用它。但是对于 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);
}
有人可以解释一下这个功能吗?
【问题讨论】:
标签: rust