## 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 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 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 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 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 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 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 When a struct type `S` has no fields (a so-called "empty struct"), allow it to be defined via either `struct S;` or `struct S {}`. When defined via `struct S;`, allow instances of it to be constructed and pattern-matched via eith...
## Summary Add additional iterator-like Entry objects to collections. Entries provide a composable mechanism for in-place observation and mutation of a single element in the collection, without having to "re-find" the element multiple times...
## 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...
## Summary Introduce a new `while let PAT = EXPR { BODY }` construct. This allows for using a refutable pattern match (with optional variable binding) as the condition of a loop. ## Motivation Just as `if let` was inspired by Swift, it turn...
## Summary Introduce a new `if let PAT = EXPR { BODY }` construct. This allows for refutable pattern matching without the syntactic and semantic overhead of a full `match`, and without the corresponding extra rightward drift. Informally thi...