trait X {}
impl<T> X for T {}
impl X for u32 {} // conflicting implementation
没有什么奇怪的:
X
是为任何类型实现的
T
我们不能再实施了
u32
令人惊讶的是,以下代码段编译成功:
use std::fmt::Display;
pub trait Show {}
impl<T: Display> Show for T {}
impl Show for str {}
// These impls would cause "conflicting implementation" errors:
// impl<'a> Show for &'a str
// impl Show for String
fn main() {}