我这里有这个代码。
fn main() {
// Assign a reference of type `i32`. The `&` signifies there
// is a reference being assigned.
let reference = &4;
match reference {
val => println!("Got a value via destructuring: {}", val),
}
match *reference {
val => println!("Got a value via destructuring: {}", val),
}
}
我期待得到这样的结果:
Got a value via destructuring: &4
Got a value via destructuring: 4
但是我得到了
Got a value via destructuring: 4
Got a value via destructuring: 4
有人可以解释一下这是怎么回事吗?
在格式字符串中使用
{}
语法时,您请求使用 Display
特征 的实现来格式化该值。原始数字类型有一个内置实现,它解释了格式化数字的情况。
但是对数字的引用呢?好吧,对于所有实现
Display
的类型的引用,都有一个内置的总体实现:impl<T> Display for &T where T: Display
。此实现只是委托给引用对象的 Display
实现,这就是输出没有差异的原因。 (请注意,Debug
也是如此。)