Pre-RFC: Unreserve inheritance-related keywords

These keywords were reserved before 1.0, and things have significantly changed since their reservation. The motivation for reservation being two, now closed RFCs for single inheritance, associated field inheritance. These two RFCs were closed and reworked into Efficient Code Reuse (which was also discussed here on internals, which lists a few other RFCs) (still prior to 1.0) because we wanted to ship 1.0, and these weren't important enough at the time.

In the end of the ECR internals thread, @nrc noted that

The favourite idea in the end has been a combination of leveraging specialisation and adding fields to traits. However, that is blocked on specialisation which is not yet stable and the feature as a whole is no longer considered high priority, so it won’t be in the 2018 edition (it is definitely still desirable, we just have a lot of higher priority things happening).

So I don't think that Rust will be seeing inheritance for at least 2 editions (which is aboout 6 years at our current pace). We'll be getting specialization probably by the next edition, so we can experiment with that, and see if we need anything more, and fields in traits doesn't need any of the keywords listed above, so I don't see the reason to keep them reserved.

To me, this is just old cruft we can dispose of. We don't have any active proposals for OO in Rust that I'm aware of (ECR RFC is more a list of goals than a), and all previous proposals were not accepted because we don't want OO in Rust.

5 Likes