【发布时间】:2015-07-27 12:21:04
【问题描述】:
尝试为自定义类型实现 Debug 特征时,我偶然发现了 Vec<T> 的实现。我很难理解它是如何工作的。
实现如下:
impl<T: fmt::Debug> fmt::Debug for Vec<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
fmt::Debug::fmt(&**self, f)
}
}
我知道它为其他类型调用了fmt 实现。我无法理解的是它是什么类型。我试图在another question 的帮助下解决这个问题,并在implementations of Debug 中搜索看起来合适的东西(可能类似于&[T]),但没有成功。
&**self 在这种情况下的确切含义是什么?正在调用Debug 的什么实现?
【问题讨论】:
标签: reference rust dereference