1
1
# Skill tree for const eval features
2
2
3
3
``` skill-tree
4
+ [[group]]
5
+ name = "cell_ref"
6
+ label = "references to interior mutability\nfeature:const_cell_refs"
7
+ href = "https://github.com/rust-lang/rust/issues/79703"
8
+ items = []
9
+
4
10
[[group]]
5
11
name = "mut_ref"
6
12
label = "mutable references in\nconst fn\nfeature:const_mut_refs"
@@ -30,7 +36,7 @@ items = []
30
36
[[group]]
31
37
name = "heap"
32
38
label = "heap allocations"
33
- requires = []
39
+ requires = ["mut_ref", "cell_ref", "trait_impl" ]
34
40
items = []
35
41
href = "https://github.com/rust-lang/const-eval/issues/20"
36
42
@@ -72,22 +78,46 @@ href = "https://github.com/rust-lang/rust/issues/53020"
72
78
requires = []
73
79
items = []
74
80
81
+ [[group]]
82
+ name = "unsafe_rules"
83
+ label = "unsafe operations in CTFE"
84
+ href = "https://github.com/rust-lang/rfcs/pull/3016"
85
+ items = []
86
+
75
87
[[group]]
76
88
name = "unconst_rules"
77
- label = "Need to come up\nwith a scheme\nfor const unsafe/unconst"
78
- items = [
79
- { label = "feature:const_fn_transmute", href = "https://github.com/rust-lang/rust/issues/53605" },
80
- { label = "feature:const_fn_union", href = "https://github.com/rust-lang/rust/issues/51909", port = "union" },
81
- { label = "feature:const_raw_ptr_deref", href = "https://github.com/rust-lang/rust/issues/51911", port = "raw_ptr_deref" },
82
- ]
89
+ label = "unconst operations"
83
90
href = "https://github.com/rust-lang/const-eval/issues/14"
91
+ items = []
92
+ requires = ["unsafe_rules"]
93
+
94
+ [[group]]
95
+ name = "transmute"
96
+ label = "feature:const_fn_transmute"
97
+ items = []
98
+ requires = ["unsafe_rules"]
99
+ href = "https://github.com/rust-lang/rust/issues/53605"
100
+
101
+ [[group]]
102
+ name = "union"
103
+ label = "feature:const_fn_union"
104
+ items = []
105
+ requires = ["unsafe_rules"]
106
+ href = "https://github.com/rust-lang/rust/issues/51909"
107
+
108
+ [[group]]
109
+ name = "raw_ptr_deref"
110
+ label = "feature:const_raw_ptr_deref"
111
+ items = []
112
+ requires = ["unsafe_rules"]
113
+ href = "https://github.com/rust-lang/rust/issues/51911"
84
114
85
115
[[group]]
86
116
name = "offset_of"
87
117
label = "offset_of"
88
118
items = []
89
119
requires = [
90
- "unconst_rules: raw_ptr_deref",
120
+ "raw_ptr_deref",
91
121
"raw_ref_macros",
92
122
"maybe_uninit_as_ptr",
93
123
"offset_from",
@@ -97,7 +127,7 @@ requires = [
97
127
name = "offset"
98
128
label = "offset\nfeature:const_ptr_offset"
99
129
href = "https://github.com/rust-lang/rust/issues/71499"
100
- requires = ["unconst_rules "]
130
+ requires = ["unsafe_rules "]
101
131
items = []
102
132
103
133
[[group]]
@@ -186,8 +216,8 @@ items = []
186
216
187
217
[[group]]
188
218
name = "const-blocks"
189
- label = "const blocks "
190
- href = "https://github.com/rust-lang/rfcs/pull/2920 "
219
+ label = "inline const "
220
+ href = "https://github.com/rust-lang/rust/issues/76001 "
191
221
items = []
192
222
193
223
[[group]]
@@ -221,9 +251,8 @@ items = []
221
251
label = "feature:const_trait_impl"
222
252
name = "trait_impl"
223
253
href="https://github.com/rust-lang/rust/issues/67792"
224
- items = [
225
- { label = "?const trait bound opt out", href = "https://github.com/rust-lang/rust/issues/67794"}
226
- ]
254
+ items = []
255
+ requires = ["trait_bound_opt_out"]
227
256
228
257
[[group]]
229
258
label = "feature:const_raw_ptr_to_usize_cast"
@@ -267,7 +296,7 @@ requires = ["vec"]
267
296
label = "Vec operations"
268
297
name = "vec"
269
298
items = []
270
- requires = ["mut_ref", "heap", "trait_impl", "drop", "unconst_rules: raw_ptr_deref"]
299
+ requires = ["mut_ref", "heap", "trait_impl", "drop", "raw_ptr_deref"]
271
300
272
301
[[group]]
273
302
label = "Drop"
@@ -279,7 +308,7 @@ requires = ["mut_ref", "trait_impl"]
279
308
label = "ptr::copy_nonoverlapping"
280
309
name = "copy_nonoverlapping"
281
310
items = []
282
- requires = ["unconst_rules: raw_ptr_deref", "mut_ref"]
311
+ requires = ["raw_ptr_deref", "mut_ref"]
283
312
284
313
[[group]]
285
314
label = "async functions\nand blocks"
0 commit comments