// Tests that `~const` trait bounds can be used to specialize const trait impls. // check-pass #![feature(const_trait_impl)] #![feature(rustc_attrs)] #![feature(min_specialization)] #[const_trait] #[rustc_specialization_trait] trait Specialize {} #[const_trait] trait Foo { fn foo(); } impl const Foo for T { default fn foo() {} } impl const Foo for T where T: ~const Specialize, { fn foo() {} } #[const_trait] trait Bar { fn bar() {} } impl const Bar for T where T: ~const Foo, { default fn bar() {} } impl const Bar for T where T: ~const Foo, T: ~const Specialize, { fn bar() {} } fn main() {}