## Summary [summary]: #summary Permit matching sub-slices and sub-arrays with the syntax `..`. Binding a variable to the expression matched by a subslice pattern can be done using syntax `<IDENT> @ ..` similar to the existing `<IDENT> @ <PA...
## Summary [summary]: #summary Add the methods `is_sorted`, `is_sorted_by` and `is_sorted_by_key` to `[T]`; add the methods `is_sorted` and `is_sorted_by` to `Iterator`. ## Motivation [motivation]: #motivation In quite a few situations, one...
## Summary [summary]: #summary Allow the use of `panic!`, `assert!` and `assert_eq!` within constants and report their evaluation as a compile-time error. ## Motivation [motivation]: #motivation It can often be desirable to terminate a cons...
## Summary [summary]: #summary Introduce new APIs to libcore / libstd to serve as safe abstractions for data which cannot be safely moved around. ## Motivation [motivation]: #motivation A longstanding problem for Rust has been dealing with...
## Summary [summary]: #summary Allow the use of `loop`, `while` and `while let` during constant evaluation. `for` loops are technically allowed, too, but can't be used in practice because each iteration calls `iterator.next()`, which is not...
## Summary [summary]: #summary This RFC proposes to allow access to enum variants through type aliases. This enables better abstraction/information hiding by encapsulating enums in aliases without having to create another enum type and requ...
## Summary [summary]: #summary Adds a *Prior art* section to the RFC template where RFC authors may discuss the experience of other programming languages and their communities with respect to what is being proposed. This section may also di...
## Summary [summary]: #summary The purpose of this RFC is to provide a framework for SIMD to be used on stable Rust. It proposes stabilizing x86-specific vendor intrinsics, but includes the scaffolding for other platforms as well as a futur...
## Summary [summary]: #summary This RFC allows safe implementations of `unsafe` trait methods. An `impl` may implement a trait with methods marked as `unsafe` without marking the methods in the `impl` as `unsafe`. This is referred to as *ov...
## Summary [summary]: #summary This is an *experimental RFC* for adding the ability to integrate custom test/bench/etc frameworks ("test frameworks") in Rust. ## Motivation [motivation]: #motivation Currently, Rust lets you write unit tests...
## Summary This RFC sets the *Rust 2018 Roadmap*, in accordance with [RFC 1728](https://github.com/rust-lang/rfcs/pull/1728). This year's goals are: - Ship an edition release: Rust 2018. - Build resources for intermediate Rustaceans. - Conn...
## Summary [summary]: #summary Add `std::num::NonZeroU32` and eleven other concrete types (one for each primitive integer type) to replace and deprecate `core::nonzero::NonZero<T>`. (Non-zero/non-null raw pointers are available through [`st...
## Summary [summary]: #summary Adds an identity function `pub const fn identity<T>(x: T) -> T { x }` as `core::convert::identity`. The function is also re-exported to `std::convert::identity`. ## Motivation [motivation]: #motivation ### The...
## Summary Add a repetition specifier to macros to repeat a pattern at most once: `$(pat)?`. Here, `?` behaves like `+` or `*` but represents at most one repetition of `pat`. ## Motivation There are two specific use cases in mind. ### Macro...
## Summary [summary]: #summary The special `Self` identifier is now permitted in `struct`, `enum`, and `union` type definitions. A simple example `struct` is: ```rust enum List<T> where Self: PartialOrd<Self> // <-- Notice the `Self` instea...
## Summary [summary]: #summary Generalize the WTF-8 encoding to allow `OsStr` to use the pattern API methods. ## Motivation [motivation]: #motivation `OsStr` is missing many common string methods compared to the standard `str` or even `[u8]...
## Summary [summary]: #summary Allow `if let` guards in `match` expressions. ## Motivation [motivation]: #motivation This feature would greatly simplify some logic where we must match a pattern iff some value computed from the `match`-bound...
## Summary [summary]: #summary Introduce the bound form `MyTrait<AssociatedType: Bounds>`, permitted anywhere a bound of the form `MyTrait<AssociatedType = T>` would be allowed. The bound `T: Trait<AssociatedType: Bounds>` desugars to the b...
## Summary [summary]: #summary Allow `let` bindings in the body of constants and const fns. Additionally enable destructuring in `let` bindings and const fn arguments. ## Motivation [motivation]: #motivation It makes writing const fns much...
## Summary [summary]: #summary Enable `if` and `match` during const evaluation and make them evaluate lazily. In short, this will allow `if x < y { y - x } else { x - y }` even though the else branch would emit an overflow error for unsigne...