#![feature(generic_const_exprs)] #![feature(specialization)] #![allow(incomplete_features)] //-------------------------------------------------- trait Depth { const C: usize; } trait Type { type AT: Depth; } //-------------------------------------------------- enum Predicate {} trait Satisfied {} impl Satisfied for Predicate {} //-------------------------------------------------- trait Spec1 {} impl Spec1 for T where Predicate<{T::AT::C > 0}>: Satisfied {} trait Spec2 {} //impl Spec2 for T where Predicate<{T::AT::C > 1}>: Satisfied {} impl Spec2 for T where Predicate: Satisfied {} //-------------------------------------------------- trait Foo { fn Bar(); } impl Foo for T { default fn Bar() {} } impl Foo for T { //~^ ERROR conflicting implementations of trait fn Bar() {} } fn main() {}