github.com
## Summary Remove the reference-counting based `Gc<T>` type from the standard library and its associated support infrastructure from `rustc`. Doing so lays a cleaner foundation upon which to prototype a proper tracing GC, and will avoid peo...
RFC 256
RFC
2014-09-19
~6 min read
github.com
## Summary The high-level idea is to add language features that simultaneously achieve three goals: 1. move `Send` and `Share` out of the language entirely and into the standard library, providing mechanisms for end users to easily implemen...
RFC 19
RFC
2014-09-18
~19 min read
github.com
## Summary This RFC proposes to remove the *runtime system* that is currently part of the standard library, which currently allows the standard library to support both native and green threading. In particular: * The `libgreen` crate and as...
RFC 230
RFC
2014-09-16
~11 min read
github.com
## Summary Make enum variants part of both the type and value namespaces. ## Motivation We might, post-1.0, want to allow using enum variants as types. This would be backwards incompatible, because if a module already has a value with the s...
RFC 234
RFC
2014-09-16
~1 min read
github.com
## Summary Add the following coercions: * From `&T` to `&U` when `T: Deref<U>`. * From `&mut T` to `&U` when `T: Deref<U>`. * From `&mut T` to `&mut U` when `T: DerefMut<U>` These coercions eliminate the need for "cross-borrowing" (things l...
RFC 241
RFC
2014-09-16
~7 min read
github.com
## Summary Add syntactic sugar for working with the `Result` type which models common exception handling constructs. The new constructs are: * An `?` operator for explicitly propagating "exceptions". * A `catch { ... }` expression for conve...
RFC 243
RFC
2014-09-16
~20 min read
github.com
## Summary This RFC is preparation for API stabilization for the `std::num` module. The proposal is to finish the simplification efforts started in [@bjz's reversal of the numerics hierarchy](https://github.com/rust-lang/rust/issues/10387)....
RFC 369
RFC
2014-09-16
~10 min read
github.com
## Summary This RFC adds *overloaded slice notation*: - `foo[]` for `foo.as_slice()` - `foo[n..m]` for `foo.slice(n, m)` - `foo[n..]` for `foo.slice_from(n)` - `foo[..m]` for `foo.slice_to(m)` - `mut` variants of all the above via two new t...
RFC 198
RFC
2014-09-11
~6 min read
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