你为什么要
#[derive(Debug)]
struct Inner<V> {
value: V,
}
struct MyStructA<V>
where
Inner<V>: Debug,
V: Debug,
{
value: V,
}
而不是仅仅
struct MyStructB<V>
where
V: Debug,
{
value: V,
}
我特别感兴趣的是where Inner<V>: Debug
添加了什么值而不是where V: Debug
。编译器更关心这一点的原因是什么呢?或者这只是为了人类文档?除非我弄错了,否则where Inner<V>: Debug
似乎没有添加任何额外的边界。
fn main() {
let my_struct_a = MyStructA {
value: Inner { value: 23 },
};
let my_struct_a_with_inner = MyStructA { value: 49 };
let my_struct_b = MyStructB { value: 64 };
let my_struct_b_with_inner = MyStructB {
value: Inner { value: 23 },
};
}
1条答案
按热度按时间cygmwpex1#
不,它没有添加任何边界。它说
Inner<V>
实现Debug
-当V
实现Debug
时会发生这种情况,所以它与第二个边界相同。它可能是为了文档而做的。