//@ run-pass #![feature(specialization)] //~^ WARN the feature `specialization` is incomplete pub trait Foo { fn abc() -> u32; fn def() -> u32; } pub trait Marker {} impl Marker for () {} impl Foo for T { default fn abc() -> u32 { 16 } default fn def() -> u32 { 42 } } impl Foo for T { fn def() -> u32 { Self::abc() } } fn main() { assert_eq!(<()>::def(), 16); assert_eq!(::def(), 42); }