1 #![feature(const_generics_defaults)] 2 3 struct Uwu<const N: u32 = 1, const M: u32 = N>; 4 5 trait Trait {} 6 impl<const N: u32> Trait for Uwu<N> {} 7 rawr() -> impl Trait8fn rawr() -> impl Trait { 9 //~^ error: the trait bound `Uwu<10_u32, 12_u32>: Trait` is not satisfied 10 Uwu::<10, 12> 11 } 12 13 trait Traitor<const N: u8 = 1, const M: u8 = N> { } 14 15 impl<const N: u8> Traitor<N, 2> for u32 {} 16 impl Traitor<1, 2> for u64 {} 17 18 uwu<const N: u8>() -> impl Traitor<N>19fn uwu<const N: u8>() -> impl Traitor<N> { 20 //~^ error: the trait bound `u32: Traitor<N, N>` is not satisfied 21 1_u32 22 } 23 owo() -> impl Traitor24fn owo() -> impl Traitor { 25 //~^ error: the trait bound `u64: Traitor<1_u8, 1_u8>` is not satisfied 26 1_u64 27 } 28 main()29fn main() { 30 rawr(); 31 uwu(); 32 owo(); 33 } 34