github.com
## 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...
RFC 2351
RFC
2018-02-24
~8 min read
github.com
## 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...
RFC 2345
RFC
2018-02-22
~2 min read
github.com
## 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...
RFC 2349
RFC
2018-02-19
~13 min read
github.com
## 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...
RFC 2344
RFC
2018-02-18
~2 min read
github.com
## 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...
RFC 2338
RFC
2018-02-15
~3 min read
github.com
## 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...
RFC 2333
RFC
2018-02-12
~7 min read
github.com
## 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...
RFC 2325
RFC
2018-02-04
~24 min read
github.com
## 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...
RFC 2316
RFC
2018-01-30
~6 min read
github.com
## 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...
RFC 2318
RFC
2018-01-25
~10 min read
github.com
## 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...
RFC 2314
RFC
2018-01-23
~22 min read
github.com
## 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...
RFC 2307
RFC
2018-01-21
~5 min read
github.com
## 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...
RFC 2306
RFC
2018-01-19
~5 min read
github.com
## 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...
RFC 2298
RFC
2018-01-17
~5 min read
github.com
## 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...
RFC 2300
RFC
2018-01-17
~14 min read
github.com
## 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]...
RFC 2295
RFC
2018-01-16
~14 min read
github.com
## 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...
RFC 2294
RFC
2018-01-15
~5 min read
github.com
## 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...
RFC 2289
RFC
2018-01-13
~5 min read
github.com
## 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...
RFC 2341
RFC
2018-01-11
~1 min read
github.com
## 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...
RFC 2342
RFC
2018-01-11
~3 min read
github.com
## Summary [summary]: #summary Allow overriding profile keys for certain dependencies, as well as providing a way to set profiles in `.cargo/config` ## Motivation [motivation]: #motivation Currently the "stable" way to tweak build parameter...
RFC 2282
RFC
2018-01-08
~4 min read