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 Trait8 fn 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>19 fn 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 Traitor24 fn owo() -> impl Traitor {
25     //~^ error: the trait bound `u64: Traitor<1_u8, 1_u8>` is not satisfied
26     1_u64
27 }
28 
main()29 fn main() {
30     rawr();
31     uwu();
32     owo();
33 }
34