Feature Gates
This chapter is intended to provide basic help for adding, removing, and modifying feature gates.
Note that this is specific to language feature gates; library feature gates use a different mechanism.
Adding a feature gate
See "Stability in code" in the "Implementing new features" section for instructions.
Removing a feature gate
To remove a feature gate, follow these steps:
-
Remove the feature gate declaration in
rustc_feature/src/unstable.rs
. It will look like this:/// description of feature (unstable, $feature_name, "$version", Some($tracking_issue_number))
-
Add a modified version of the feature gate declaration that you just removed to
rustc_feature/src/removed.rs
:/// description of feature (removed, $old_feature_name, "$version", Some($tracking_issue_number), Some("$why_it_was_removed"))
Renaming a feature gate
To rename a feature gate, follow these steps (the first two are the same steps to follow when removing a feature gate):
-
Remove the old feature gate declaration in
rustc_feature/src/unstable.rs
. It will look like this:/// description of feature (unstable, $old_feature_name, "$version", Some($tracking_issue_number))
-
Add a modified version of the old feature gate declaration that you just removed to
rustc_feature/src/removed.rs
:/// description of feature /// Renamed to `$new_feature_name` (removed, $old_feature_name, "$version", Some($tracking_issue_number), Some("renamed to `$new_feature_name`"))
-
Add a feature gate declaration with the new name to
rustc_feature/src/unstable.rs
. It should look very similar to the old declaration:/// description of feature (unstable, $new_feature_name, "$version", Some($tracking_issue_number))
Stabilizing a feature
See "Updating the feature-gate listing" in the "Stabilizing Features" chapter for instructions. There are additional steps you will need to take beyond just updating the declaration!