## Summary Reserve `abstract`, `final`, and `override` as possible keywords. ## Motivation We intend to add some mechanism to Rust to support more efficient inheritance (see, e.g., RFC PRs #245 and #250, and this [thread](http://discuss.rus...
## Summary Add `where` clauses, which provide a more expressive means of specifying trait parameter bounds. A `where` clause comes after a declaration of a generic item (e.g., an impl or struct definition) and specifies a list of bounds tha...
## Summary Removes the "virtual struct" (aka struct inheritance) feature, which is currently feature gated. ## Motivation Virtual structs were added experimentally prior to the RFC process as a way of inheriting fields from one struct when...
## Summary Change the types of byte string literals to be references to statically sized types. Ensure the same change can be performed backward compatibly for string literals in the future. ## Motivation Currently byte string and string li...
## Summary Include identifiers immediately after literals in the literal token to allow future expansion, e.g. `"foo"bar` and a `1baz` are considered whole (but semantically invalid) tokens, rather than two separate tokens `"foo"`, `bar` an...
## Summary In string literal contexts, restrict `\xXX` escape sequences to just the range of ASCII characters, `\x00` -- `\x7F`. `\xXX` inputs in string literals with higher numbers are rejected (with an error message suggesting that one us...
## Summary Remove drop flags from values implementing `Drop`, and remove automatic memory zeroing associated with dropping values. Keep dynamic drop semantics, by having each function maintain a (potentially empty) set of auto-injected bool...
## Summary Rename "task failure" to "task panic", and `fail!` to `panic!`. ## Motivation The current terminology of "task failure" often causes problems when writing or speaking about code. You often want to talk about the possibility of an...
## Summary Restrict which traits can be used to make trait objects. Currently, we allow any traits to be used for trait objects, but restrict the methods which can be called on such objects. Here, we propose instead restricting which traits...
## Summary Remove the reference-counting based `Gc<T>` type from the standard library and its associated support infrastructure from `rustc`. Doing so lays a cleaner foundation upon which to prototype a proper tracing GC, and will avoid peo...
## Summary The high-level idea is to add language features that simultaneously achieve three goals: 1. move `Send` and `Share` out of the language entirely and into the standard library, providing mechanisms for end users to easily implemen...
## Summary This RFC proposes to remove the *runtime system* that is currently part of the standard library, which currently allows the standard library to support both native and green threading. In particular: * The `libgreen` crate and as...
## Summary Make enum variants part of both the type and value namespaces. ## Motivation We might, post-1.0, want to allow using enum variants as types. This would be backwards incompatible, because if a module already has a value with the s...
## Summary Add the following coercions: * From `&T` to `&U` when `T: Deref<U>`. * From `&mut T` to `&U` when `T: Deref<U>`. * From `&mut T` to `&mut U` when `T: DerefMut<U>` These coercions eliminate the need for "cross-borrowing" (things l...
## Summary Add syntactic sugar for working with the `Result` type which models common exception handling constructs. The new constructs are: * An `?` operator for explicitly propagating "exceptions". * A `catch { ... }` expression for conve...
## Summary This RFC is preparation for API stabilization for the `std::num` module. The proposal is to finish the simplification efforts started in [@bjz's reversal of the numerics hierarchy](https://github.com/rust-lang/rust/issues/10387)....
## Summary This RFC adds *overloaded slice notation*: - `foo[]` for `foo.as_slice()` - `foo[n..m]` for `foo.slice(n, m)` - `foo[n..]` for `foo.slice_from(n)` - `foo[..m]` for `foo.slice_to(m)` - `mut` variants of all the above via two new t...
## Summary The `||` unboxed closure form should be split into two forms—`||` for nonescaping closures and `move ||` for escaping closures—and the capture clauses and self type specifiers should be removed. ## Motivation Having to specify `r...
## Summary Restore the integer inference fallback that was removed. Integer literals whose type is unconstrained will default to `i32`, unlike the previous fallback to `int`. Floating point literals will default to `f64`. ## Motivation ###...
## Summary This is a *conventions RFC* for settling naming conventions when there are by value, by reference, and by mutable reference variants of an operation. ## Motivation Currently the libraries are not terribly consistent about how to...