github.com
## 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...
RFC 231
RFC
2014-09-09
~2 min read
github.com
## 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 ###...
RFC 212
RFC
2014-09-03
~6 min read
github.com
## 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...
RFC 199
RFC
2014-08-28
~3 min read
github.com
## 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...
RFC 216
RFC
2014-08-28
~7 min read
github.com
## 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...
RFC 218
RFC
2014-08-28
~12 min read
github.com
## 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...
RFC 214
RFC
2014-08-27
~2 min read
github.com
## 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...
RFC 160
RFC
2014-08-26
~5 min read
github.com
## Summary Change syntax of subslices matching from `..xs` to `xs..` to be more consistent with the rest of the language and allow future backwards compatible improvements. Small example: ```rust match slice { [xs.., _] => xs, [] => fail!()...
RFC 202
RFC
2014-08-15
~1 min read
github.com
## Summary The `#[cfg(...)]` attribute provides a mechanism for conditional compilation of items in a Rust crate. This RFC proposes to change the syntax of `#[cfg]` to make more sense as well as enable expansion of the conditional compilati...
RFC 194
RFC
2014-08-09
~3 min read
github.com
## Summary Divide global declarations into two categories: - **constants** declare *constant values*. These represent a value, not a memory address. This is the most common thing one would reach for and would replace `static` as we know it...
RFC 246
RFC
2014-08-08
~8 min read
github.com
## Summary - Remove the special-case bound `'static` and replace with a generalized *lifetime bound* that can be used on objects and type parameters. - Remove the rules that aim to prevent references from being stored into objects and repla...
RFC 192
RFC
2014-08-06
~14 min read
github.com
## Summary This RFC extends traits with *associated items*, which make generic programming more convenient, scalable, and powerful. In particular, traits will consist of a set of methods, together with: * Associated functions (already prese...
RFC 195
RFC
2014-08-04
~36 min read
github.com
## Summary - Convert function call `a(b, ..., z)` into an overloadable operator via the traits `Fn<A,R>`, `FnShare<A,R>`, and `FnOnce<A,R>`, where `A` is a tuple `(B, ..., Z)` of the types `B...Z` of the arguments `b...z`, and `R` is the re...
RFC 114
RFC
2014-07-29
~14 min read
github.com
## Summary Remove special treatment of `Box<T>` from the borrow checker. ## Motivation Currently the `Box<T>` type is special-cased and converted to the old `~T` internally. This is mostly invisible to the user, but it shows up in some plac...
RFC 130
RFC
2014-07-29
~3 min read
github.com
## Summary Add simple syntax for accessing values within tuples and tuple structs behind a feature gate. ## Motivation Right now accessing fields of tuples and tuple structs is incredibly painful—one must rely on pattern-matching alone to e...
RFC 184
RFC
2014-07-24
~1 min read
github.com
## Summary This RFC improves interoperation between APIs with different error types. It proposes to: * Increase the flexibility of the `try!` macro for clients of multiple libraries with disparate error types. * Standardize on basic functio...
RFC 201
RFC
2014-07-17
~8 min read
github.com
## Summary Change the rebinding syntax from `use ID = PATH` to `use PATH as ID`, so that paths all line up on the left side, and imported identifiers are all on the right side. Also modify `extern crate` syntax analogously, for consistency....
RFC 169
RFC
2014-07-16
~5 min read
github.com
## Summary The variants of an enum are currently defined in the same namespace as the enum itself. This RFC proposes to define variants under the enum's namespace. ### Note In the rest of this RFC, *flat enums* will be used to refer to the...
RFC 390
RFC
2014-07-16
~7 min read
github.com
## Summary Rust's support for pattern matching on slices has grown steadily and incrementally without a lot of oversight. We have concern that Rust is doing too much here, and that the complexity is not worth it. This RFC proposes to featur...
RFC 164
RFC
2014-07-14
~1 min read
github.com
## Summary Require "anonymous traits", i.e. `impl MyStruct` to occur only in the same module that `MyStruct` is defined. ## Motivation Before I can explain the motivation for this, I should provide some background as to how anonymous traits...
RFC 155
RFC
2014-07-04
~4 min read