Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- [Implementing new features](./implementing_new_features.md)
- [Stability attributes](./stability.md)
- [Stabilizing Features](./stabilization_guide.md)
- [Feature Gates](./feature-gates.md)
- [Coding conventions](./conventions.md)
- [Notification groups](notification-groups/about.md)
- [ARM](notification-groups/arm.md)
Expand Down
65 changes: 65 additions & 0 deletions src/feature-gates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Feature Gates

This chapter is intended to provide basic help for modifying feature gates. See
["Stability in code"][stability-section] for help with *adding* feature gates.

[stability-section]: ./implementing_new_features.md#stability-in-code


## Removing a feature gate

[removing]: #removing-a-feature-gate

To remove a feature gate, follow these steps:

1. Remove the feature gate declaration in `rustc_feature/src/active.rs`.
It will look like this:

```rust,ignore
/// description of feature
(active, $feature_name, "$version", Some($tracking_issue_number), $edition)
```

2. Add a modified version of the feature gate declaration that you just
removed to `rustc_feature/src/removed.rs`:

```rust,ignore
/// description of feature
(removed, $old_feature_name, "$version", Some($tracking_issue_number), $edition,
Some("$why_it_was_removed"))
```


## Renaming a feature gate

[renaming]: #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][removing]):

1. Remove the old feature gate declaration in `rustc_feature/src/active.rs`.
It will look like this:

```rust,ignore
/// description of feature
(active, $old_feature_name, "$version", Some($tracking_issue_number), $edition)
```

2. Add a modified version of the old feature gate declaration that you just
removed to `rustc_feature/src/removed.rs`:

```rust,ignore
/// description of feature
/// Renamed to `$new_feature_name`
(removed, $old_feature_name, "$version", Some($tracking_issue_number), $edition,
Some("renamed to `$new_feature_name`"))
```

3. Add a feature gate declaration with the new name to
`rustc_feature/src/active.rs`. It should look very similar to the old
declaration:

```rust,ignore
/// description of feature
(active, $new_feature_name, "$version", Some($tracking_issue_number), $edition)
```