显示参考文献

问题描述 投票:0回答:1

我这里有这个代码。

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

有人可以解释一下这是怎么回事吗?

rust dereference
1个回答
1
投票

在格式字符串中使用

{}
语法时,您请求使用
Display
特征
的实现来格式化该值。原始数字类型有一个内置实现,它解释了格式化数字的情况。

但是对数字的引用呢?好吧,对于所有实现

Display
的类型的引用,都有一个内置的总体实现:
impl<T> Display for &T where T: Display
。此实现只是委托给引用对象的
Display
实现,这就是输出没有差异的原因。 (请注意,
Debug
也是如此。)

© www.soinside.com 2019 - 2024. All rights reserved.