//@ run-pass // Test that non-method associated functions can be specialized #![feature(specialization)] //~ WARN the feature `specialization` is incomplete trait Foo { fn mk() -> Self; } impl Foo for T { default fn mk() -> T { T::default() } } impl Foo for Vec { fn mk() -> Vec { vec![0] } } fn main() { let v1: Vec = Foo::mk(); let v2: Vec = Foo::mk(); assert!(v1.len() == 0); assert!(v2.len() == 1); }