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
github.com
## Summary Change pattern matching on an `&mut T` to `&mut <pat>`, away from its current `&<pat>` syntax. ## Motivation Pattern matching mirrors construction for almost all types, *except* `&mut`, which is constructed with `&mut <expr>` but...
RFC 179
RFC
2015-01-04
~2 min read
github.com
## Summary 1. Remove the `Sized` default for the implicitly declared `Self` parameter on traits. 2. Make it "object unsafe" for a trait to inherit from `Sized`. ## Motivation The primary motivation is to enable a trait object `SomeTrait` to...
RFC 546
RFC
2015-01-03
~3 min read
github.com
## Summary * Remove the `std::c_vec` module * Move `std::c_str` under a new `std::ffi` module, not exporting the `c_str` module. * Focus `CString` on *Rust-owned* bytes, providing a static assertion that a pile of bytes has no interior nuls...
RFC 494
RFC
2015-01-02
~7 min read
github.com
## Summary Rename the `#[deriving(Foo)]` syntax extension to `#[derive(Foo)]`. ## Motivation Unlike our other verb-based attribute names, "deriving" stands alone as a present participle. By convention our attributes prefer "warn" rather tha...
RFC 534
RFC
2014-12-31
~1 min read
github.com
## Summary Statically enforce that the `std::fmt` module can only create valid UTF-8 data by removing the arbitrary `write` method in favor of a `write_str` method. ## Motivation Today it is conventionally true that the output from macros l...
RFC 526
RFC
2014-12-30
~3 min read
github.com
## Summary This RFC proposes that we rename the pointer-sized integer types `int/uint`, so as to avoid misconceptions and misuses. After extensive community discussions and several revisions of this RFC, the finally chosen names are `isize/...
RFC 544
RFC
2014-12-28
~12 min read
github.com
## Summary Future-proof the allowed forms that input to an MBE can take by requiring certain delimiters following NTs in a matcher. In the future, it will be possible to lift these restrictions backwards compatibly if desired. ## Key Termin...
RFC 550
RFC
2014-12-21
~21 min read
github.com
## Summary Stabilize the `std::prelude` module by removing some of the less commonly used functionality of it. ## Motivation The prelude of the standard library is included into all Rust programs by default, and is consequently quite an imp...
RFC 503
RFC
2014-12-20
~12 min read