11# Skill tree for const eval features
22
33``` 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+
410[[group]]
511name = "mut_ref"
612label = "mutable references in\nconst fn\nfeature:const_mut_refs"
@@ -30,7 +36,7 @@ items = []
3036[[group]]
3137name = "heap"
3238label = "heap allocations"
33- requires = []
39+ requires = ["mut_ref", "cell_ref", "trait_impl" ]
3440items = []
3541href = "https://github.com/rust-lang/const-eval/issues/20"
3642
@@ -72,22 +78,46 @@ href = "https://github.com/rust-lang/rust/issues/53020"
7278requires = []
7379items = []
7480
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+
7587[[group]]
7688name = "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"
8390href = "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"
84114
85115[[group]]
86116name = "offset_of"
87117label = "offset_of"
88118items = []
89119requires = [
90- "unconst_rules: raw_ptr_deref",
120+ "raw_ptr_deref",
91121 "raw_ref_macros",
92122 "maybe_uninit_as_ptr",
93123 "offset_from",
@@ -97,7 +127,7 @@ requires = [
97127name = "offset"
98128label = "offset\nfeature:const_ptr_offset"
99129href = "https://github.com/rust-lang/rust/issues/71499"
100- requires = ["unconst_rules "]
130+ requires = ["unsafe_rules "]
101131items = []
102132
103133[[group]]
@@ -186,8 +216,8 @@ items = []
186216
187217[[group]]
188218name = "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 "
191221items = []
192222
193223[[group]]
@@ -221,9 +251,8 @@ items = []
221251label = "feature:const_trait_impl"
222252name = "trait_impl"
223253href="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"]
227256
228257[[group]]
229258label = "feature:const_raw_ptr_to_usize_cast"
@@ -267,7 +296,7 @@ requires = ["vec"]
267296label = "Vec operations"
268297name = "vec"
269298items = []
270- requires = ["mut_ref", "heap", "trait_impl", "drop", "unconst_rules: raw_ptr_deref"]
299+ requires = ["mut_ref", "heap", "trait_impl", "drop", "raw_ptr_deref"]
271300
272301[[group]]
273302label = "Drop"
@@ -279,7 +308,7 @@ requires = ["mut_ref", "trait_impl"]
279308label = "ptr::copy_nonoverlapping"
280309name = "copy_nonoverlapping"
281310items = []
282- requires = ["unconst_rules: raw_ptr_deref", "mut_ref"]
311+ requires = ["raw_ptr_deref", "mut_ref"]
283312
284313[[group]]
285314label = "async functions\nand blocks"
0 commit comments