Skip to content

Commit 19a3fe6

Browse files
committed
exhaustively enumerate all values of a const param
1 parent a8310e2 commit 19a3fe6

File tree

3 files changed

+310
-0
lines changed

3 files changed

+310
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
error[E0277]: the trait bound `(): Foo<N>` is not satisfied
2+
--> $DIR/exhaustive-value.rs:267:5
3+
|
4+
LL | fn test() {}
5+
| --------- required by `Foo::test`
6+
...
7+
LL | <() as Foo<N>>::test()
8+
| ^^^^^^^^^^^^^^^^^^^^ the trait `Foo<N>` is not implemented for `()`
9+
|
10+
= help: the following implementations were found:
11+
<() as Foo<0_u8>>
12+
<() as Foo<100_u8>>
13+
<() as Foo<101_u8>>
14+
<() as Foo<102_u8>>
15+
and 252 others
16+
17+
error: aborting due to previous error
18+
19+
For more information about this error, try `rustc --explain E0277`.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
error[E0277]: the trait bound `(): Foo<N>` is not satisfied
2+
--> $DIR/exhaustive-value.rs:267:5
3+
|
4+
LL | fn test() {}
5+
| --------- required by `Foo::test`
6+
...
7+
LL | <() as Foo<N>>::test()
8+
| ^^^^^^^^^^^^^^^^^^^^ the trait `Foo<N>` is not implemented for `()`
9+
|
10+
= help: the following implementations were found:
11+
<() as Foo<0_u8>>
12+
<() as Foo<100_u8>>
13+
<() as Foo<101_u8>>
14+
<() as Foo<102_u8>>
15+
and 252 others
16+
17+
error: aborting due to previous error
18+
19+
For more information about this error, try `rustc --explain E0277`.
Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,272 @@
1+
// revisions: full min
2+
#![cfg_attr(full, feature(const_generics))]
3+
#![cfg_attr(full, allow(incomplete_features))]
4+
#![cfg_attr(min, feature(min_const_generics))]
5+
6+
trait Foo<const N: u8> {
7+
fn test() {}
8+
}
9+
impl Foo<0> for () {}
10+
impl Foo<1> for () {}
11+
impl Foo<2> for () {}
12+
impl Foo<3> for () {}
13+
impl Foo<4> for () {}
14+
impl Foo<5> for () {}
15+
impl Foo<6> for () {}
16+
impl Foo<7> for () {}
17+
impl Foo<8> for () {}
18+
impl Foo<9> for () {}
19+
impl Foo<10> for () {}
20+
impl Foo<11> for () {}
21+
impl Foo<12> for () {}
22+
impl Foo<13> for () {}
23+
impl Foo<14> for () {}
24+
impl Foo<15> for () {}
25+
impl Foo<16> for () {}
26+
impl Foo<17> for () {}
27+
impl Foo<18> for () {}
28+
impl Foo<19> for () {}
29+
impl Foo<20> for () {}
30+
impl Foo<21> for () {}
31+
impl Foo<22> for () {}
32+
impl Foo<23> for () {}
33+
impl Foo<24> for () {}
34+
impl Foo<25> for () {}
35+
impl Foo<26> for () {}
36+
impl Foo<27> for () {}
37+
impl Foo<28> for () {}
38+
impl Foo<29> for () {}
39+
impl Foo<30> for () {}
40+
impl Foo<31> for () {}
41+
impl Foo<32> for () {}
42+
impl Foo<33> for () {}
43+
impl Foo<34> for () {}
44+
impl Foo<35> for () {}
45+
impl Foo<36> for () {}
46+
impl Foo<37> for () {}
47+
impl Foo<38> for () {}
48+
impl Foo<39> for () {}
49+
impl Foo<40> for () {}
50+
impl Foo<41> for () {}
51+
impl Foo<42> for () {}
52+
impl Foo<43> for () {}
53+
impl Foo<44> for () {}
54+
impl Foo<45> for () {}
55+
impl Foo<46> for () {}
56+
impl Foo<47> for () {}
57+
impl Foo<48> for () {}
58+
impl Foo<49> for () {}
59+
impl Foo<50> for () {}
60+
impl Foo<51> for () {}
61+
impl Foo<52> for () {}
62+
impl Foo<53> for () {}
63+
impl Foo<54> for () {}
64+
impl Foo<55> for () {}
65+
impl Foo<56> for () {}
66+
impl Foo<57> for () {}
67+
impl Foo<58> for () {}
68+
impl Foo<59> for () {}
69+
impl Foo<60> for () {}
70+
impl Foo<61> for () {}
71+
impl Foo<62> for () {}
72+
impl Foo<63> for () {}
73+
impl Foo<64> for () {}
74+
impl Foo<65> for () {}
75+
impl Foo<66> for () {}
76+
impl Foo<67> for () {}
77+
impl Foo<68> for () {}
78+
impl Foo<69> for () {}
79+
impl Foo<70> for () {}
80+
impl Foo<71> for () {}
81+
impl Foo<72> for () {}
82+
impl Foo<73> for () {}
83+
impl Foo<74> for () {}
84+
impl Foo<75> for () {}
85+
impl Foo<76> for () {}
86+
impl Foo<77> for () {}
87+
impl Foo<78> for () {}
88+
impl Foo<79> for () {}
89+
impl Foo<80> for () {}
90+
impl Foo<81> for () {}
91+
impl Foo<82> for () {}
92+
impl Foo<83> for () {}
93+
impl Foo<84> for () {}
94+
impl Foo<85> for () {}
95+
impl Foo<86> for () {}
96+
impl Foo<87> for () {}
97+
impl Foo<88> for () {}
98+
impl Foo<89> for () {}
99+
impl Foo<90> for () {}
100+
impl Foo<91> for () {}
101+
impl Foo<92> for () {}
102+
impl Foo<93> for () {}
103+
impl Foo<94> for () {}
104+
impl Foo<95> for () {}
105+
impl Foo<96> for () {}
106+
impl Foo<97> for () {}
107+
impl Foo<98> for () {}
108+
impl Foo<99> for () {}
109+
impl Foo<100> for () {}
110+
impl Foo<101> for () {}
111+
impl Foo<102> for () {}
112+
impl Foo<103> for () {}
113+
impl Foo<104> for () {}
114+
impl Foo<105> for () {}
115+
impl Foo<106> for () {}
116+
impl Foo<107> for () {}
117+
impl Foo<108> for () {}
118+
impl Foo<109> for () {}
119+
impl Foo<110> for () {}
120+
impl Foo<111> for () {}
121+
impl Foo<112> for () {}
122+
impl Foo<113> for () {}
123+
impl Foo<114> for () {}
124+
impl Foo<115> for () {}
125+
impl Foo<116> for () {}
126+
impl Foo<117> for () {}
127+
impl Foo<118> for () {}
128+
impl Foo<119> for () {}
129+
impl Foo<120> for () {}
130+
impl Foo<121> for () {}
131+
impl Foo<122> for () {}
132+
impl Foo<123> for () {}
133+
impl Foo<124> for () {}
134+
impl Foo<125> for () {}
135+
impl Foo<126> for () {}
136+
impl Foo<127> for () {}
137+
impl Foo<128> for () {}
138+
impl Foo<129> for () {}
139+
impl Foo<130> for () {}
140+
impl Foo<131> for () {}
141+
impl Foo<132> for () {}
142+
impl Foo<133> for () {}
143+
impl Foo<134> for () {}
144+
impl Foo<135> for () {}
145+
impl Foo<136> for () {}
146+
impl Foo<137> for () {}
147+
impl Foo<138> for () {}
148+
impl Foo<139> for () {}
149+
impl Foo<140> for () {}
150+
impl Foo<141> for () {}
151+
impl Foo<142> for () {}
152+
impl Foo<143> for () {}
153+
impl Foo<144> for () {}
154+
impl Foo<145> for () {}
155+
impl Foo<146> for () {}
156+
impl Foo<147> for () {}
157+
impl Foo<148> for () {}
158+
impl Foo<149> for () {}
159+
impl Foo<150> for () {}
160+
impl Foo<151> for () {}
161+
impl Foo<152> for () {}
162+
impl Foo<153> for () {}
163+
impl Foo<154> for () {}
164+
impl Foo<155> for () {}
165+
impl Foo<156> for () {}
166+
impl Foo<157> for () {}
167+
impl Foo<158> for () {}
168+
impl Foo<159> for () {}
169+
impl Foo<160> for () {}
170+
impl Foo<161> for () {}
171+
impl Foo<162> for () {}
172+
impl Foo<163> for () {}
173+
impl Foo<164> for () {}
174+
impl Foo<165> for () {}
175+
impl Foo<166> for () {}
176+
impl Foo<167> for () {}
177+
impl Foo<168> for () {}
178+
impl Foo<169> for () {}
179+
impl Foo<170> for () {}
180+
impl Foo<171> for () {}
181+
impl Foo<172> for () {}
182+
impl Foo<173> for () {}
183+
impl Foo<174> for () {}
184+
impl Foo<175> for () {}
185+
impl Foo<176> for () {}
186+
impl Foo<177> for () {}
187+
impl Foo<178> for () {}
188+
impl Foo<179> for () {}
189+
impl Foo<180> for () {}
190+
impl Foo<181> for () {}
191+
impl Foo<182> for () {}
192+
impl Foo<183> for () {}
193+
impl Foo<184> for () {}
194+
impl Foo<185> for () {}
195+
impl Foo<186> for () {}
196+
impl Foo<187> for () {}
197+
impl Foo<188> for () {}
198+
impl Foo<189> for () {}
199+
impl Foo<190> for () {}
200+
impl Foo<191> for () {}
201+
impl Foo<192> for () {}
202+
impl Foo<193> for () {}
203+
impl Foo<194> for () {}
204+
impl Foo<195> for () {}
205+
impl Foo<196> for () {}
206+
impl Foo<197> for () {}
207+
impl Foo<198> for () {}
208+
impl Foo<199> for () {}
209+
impl Foo<200> for () {}
210+
impl Foo<201> for () {}
211+
impl Foo<202> for () {}
212+
impl Foo<203> for () {}
213+
impl Foo<204> for () {}
214+
impl Foo<205> for () {}
215+
impl Foo<206> for () {}
216+
impl Foo<207> for () {}
217+
impl Foo<208> for () {}
218+
impl Foo<209> for () {}
219+
impl Foo<210> for () {}
220+
impl Foo<211> for () {}
221+
impl Foo<212> for () {}
222+
impl Foo<213> for () {}
223+
impl Foo<214> for () {}
224+
impl Foo<215> for () {}
225+
impl Foo<216> for () {}
226+
impl Foo<217> for () {}
227+
impl Foo<218> for () {}
228+
impl Foo<219> for () {}
229+
impl Foo<220> for () {}
230+
impl Foo<221> for () {}
231+
impl Foo<222> for () {}
232+
impl Foo<223> for () {}
233+
impl Foo<224> for () {}
234+
impl Foo<225> for () {}
235+
impl Foo<226> for () {}
236+
impl Foo<227> for () {}
237+
impl Foo<228> for () {}
238+
impl Foo<229> for () {}
239+
impl Foo<230> for () {}
240+
impl Foo<231> for () {}
241+
impl Foo<232> for () {}
242+
impl Foo<233> for () {}
243+
impl Foo<234> for () {}
244+
impl Foo<235> for () {}
245+
impl Foo<236> for () {}
246+
impl Foo<237> for () {}
247+
impl Foo<238> for () {}
248+
impl Foo<239> for () {}
249+
impl Foo<240> for () {}
250+
impl Foo<241> for () {}
251+
impl Foo<242> for () {}
252+
impl Foo<243> for () {}
253+
impl Foo<244> for () {}
254+
impl Foo<245> for () {}
255+
impl Foo<246> for () {}
256+
impl Foo<247> for () {}
257+
impl Foo<248> for () {}
258+
impl Foo<249> for () {}
259+
impl Foo<250> for () {}
260+
impl Foo<251> for () {}
261+
impl Foo<252> for () {}
262+
impl Foo<253> for () {}
263+
impl Foo<254> for () {}
264+
impl Foo<255> for () {}
265+
266+
fn foo<const N: u8>() {
267+
<() as Foo<N>>::test() //~ ERROR the trait bound `(): Foo<N>`
268+
}
269+
270+
fn main() {
271+
foo::<7>();
272+
}

0 commit comments

Comments
 (0)