github.com
## Summary [summary]: #summary The current compiler implements a more expansive semantics for pattern matching than was originally intended. This RFC introduces several mechanisms to reign in these semantics without actually breaking (much,...
RFC 1445
RFC
2015-02-06
~17 min read
github.com
## Summary Rust currently includes feature-gated support for type parameters that specify a default value. This feature is not well-specified. The aim of this RFC is to fully specify the behavior of defaulted type parameters: 1. Type parame...
RFC 213
RFC
2015-02-04
~18 min read
github.com
## This RFC was previously approved, but later **withdrawn** For details see the [summary comment]. [summary comment]: https://github.com/rust-lang/rust/issues/27779#issuecomment-378416911 ## Summary * Change placement-new syntax from: `box...
RFC 809
RFC
2015-02-04
~20 min read
github.com
## Summary Add type ascription to expressions. (An earlier version of this RFC covered type ascription in patterns too, that has been postponed). Type ascription on expression has already been implemented. See also discussion on [#354](http...
RFC 803
RFC
2015-02-03
~6 min read
github.com
## Summary Add a `once` function to `std::iter` to construct an iterator yielding a given value one time, and an `empty` function to construct an iterator yielding no values. ## Motivation This is a common task when working with iterators....
RFC 771
RFC
2015-01-30
~1 min read
github.com
## Summary Change Functional Record Update (FRU) for struct literal expressions to respect struct privacy. ## Motivation Functional Record Update is the name for the idiom by which one can write `..<expr>` at the end of a struct literal exp...
RFC 736
RFC
2015-01-26
~8 min read
github.com
## Summary The `Fn` traits should be modified to make the return type an associated type. ## Motivation The strongest reason is because it would permit impls like the following (example from @alexcrichton): ```rust impl<R,F> Foo for F : FnM...
RFC 587
RFC
2015-01-22
~3 min read
github.com
## Summary Add a new intrinsic, `discriminant_value` that extracts the value of the discriminant for enum types. ## Motivation Many operations that work with discriminant values can be significantly improved with the ability to extract the...
RFC 639
RFC
2015-01-21
~4 min read
github.com
## Summary Add the syntax `..` for `std::ops::RangeFull`. ## Motivation Range expressions `a..b`, `a..` and `..b` all have dedicated syntax and produce first-class values. This means that they will be usable and useful in custom APIs, so fo...
RFC 702
RFC
2015-01-21
~1 min read
github.com
## Summary Rename the `be` reserved keyword to `become`. ## Motivation A keyword needs to be reserved to support guaranteed tail calls in a backward-compatible way. Currently the keyword reserved for this purpose is `be`, but the `become` a...
RFC 601
RFC
2015-01-20
~1 min read
github.com
## Summary The `Debug` trait is intended to be implemented by every type and display useful runtime information to help with debugging. This RFC proposes two additions to the fmt API, one of which aids implementors of `Debug`, and one which...
RFC 640
RFC
2015-01-20
~4 min read
github.com
## Summary Make `Self` a keyword. ## Motivation Right now, `Self` is just a regular identifier that happens to get a special meaning inside trait definitions and impls. Specifically, users are not forbidden from defining a type called `Self...
RFC 593
RFC
2015-01-18
~1 min read
github.com
## Summary Make `CString` dereference to a token type `CStr`, which designates null-terminated string data. ```rust // Type-checked to only accept C strings fn safe_puts(s: &CStr) { unsafe { libc::puts(s.as_ptr()) }; } fn main() { let s = C...
RFC 592
RFC
2015-01-17
~4 min read
github.com
## Summary Rename (maybe one of) the standard collections, so as to make the names more consistent. Currently, among all the alternatives, renaming `BinaryHeap` to `BinHeap` is the slightly preferred solution. ## Motivation In [this comment...
RFC 580
RFC
2015-01-13
~4 min read
github.com
## Summary Replace `Vec::drain` by a method that accepts a range parameter. Add `String::drain` with similar functionality. ## Motivation Allowing a range parameter is strictly more powerful than the current version. E.g., see the following...
RFC 574
RFC
2015-01-12
~2 min read
github.com
## Summary Feature gate unused attributes for backwards compatibility. ## Motivation Interpreting the current backwards compatibility rules strictly, it's not possible to add any further language features that use new attributes. For exampl...
RFC 572
RFC
2015-01-11
~2 min read
github.com
## Summary Remove official support for the `ndebug` config variable, replace the current usage of it with a more appropriate `debug_assertions` compiler-provided config variable. ## Motivation The usage of 'ndebug' to indicate a release bui...
RFC 563
RFC
2015-01-08
~1 min read
github.com
## Summary A [recent RFC](https://github.com/rust-lang/rfcs/pull/504) split what was previously `fmt::Show` into two traits, `fmt::Show` and `fmt::String`, with format specifiers `{:?}` and `{}` respectively. That RFC did not, however, esta...
RFC 565
RFC
2015-01-08
~5 min read
github.com
## Summary Remove chaining of comparison operators (e.g. `a == b == c`) from the syntax. Instead, require extra parentheses (`(a == b) == c`). ## Motivation ```rust fn f(a: bool, b: bool, c: bool) -> bool { a == b == c } ``` This code is cu...
RFC 558
RFC
2015-01-07
~2 min read
github.com
## Summary Establish a convention throughout the core libraries for unsafe functions constructing references out of raw pointers. The goal is to improve usability while promoting awareness of possible pitfalls with inferred lifetimes. ## Mo...
RFC 556
RFC
2015-01-06
~3 min read