#[derive(Debug)]
我正在查看一个简单案例的输出cargo expand
,其中:
#[derive(Debug)]
struct Point {
x: i32,
y: i32,
}
发出(添加的评论是我的):
#[automatically_derived]
impl ::core::fmt::Debug for Point {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(
f,
"Point",
"x",
&self.x, // <== &
"y",
&&self.y, // <== &&
)
}
}
&self.x
请注意,但是。&&self.y
尝试了其他几种情况,最后一个字段似乎总是会得到一个额外的&
。该值看起来需要&dyn Debug
,所以我猜这只是在某处自动取消引用并且无关紧要?
为什么是额外的&
?