## Summary - Use inference to determine the *variance* of input type parameters. - Make it an error to have unconstrained type/lifetime parameters. - Revamp the variance markers to make them more intuitive and less numerous. In fact, there...
## Summary This RFC shores up the finer details of collections reform. In particular, where the [previous RFC][part1] focused on general conventions and patterns, this RFC focuses on specific APIs. It also patches up any errors that were fo...
## Summary According to current documents, the RFC process is required to make "substantial" changes to the Rust distribution. It is currently lightweight, but lacks a definition for the Rust distribution. This RFC aims to amend the process...
## Summary Under this RFC, the syntax to specify the type of a fixed-length array containing `N` elements of type `T` would be changed to `[T; N]`. Similarly, the syntax to construct an array containing `N` duplicated elements of value `x`...
## Summary Allow `Self` type to be used in impls. ## Motivation Allows macros which operate on methods to do more, more easily without having to rebuild the concrete self type. Macros could use the literal self type like programmers do, but...
## Note This RFC has been amended by [RFC 1574], which contains [a combined version of the conventions][combined]. [RFC 1574]: https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md [combined]: https:/...
## Summary [Summary]: #summary This RFC proposes a significant redesign of the `std::io` and `std::os` modules in preparation for API stabilization. The specific problems addressed by the redesign are given in the [Problems] section below,...
## Summary Make name and behavior of the `#![no_std]` and `#![no_implicit_prelude]` attributes consistent by renaming the latter to `#![no_prelude]` and having it only apply to the current module. ## Motivation Currently, Rust automatically...
## Summary Change array/slice patterns in the following ways: - Make them only match on arrays (`[T; n]` and `[T]`), not slices; - Make subslice matching yield a value of type `[T; n]` or `[T]`, not `&[T]` or `&mut [T]`; - Allow multiple mu...
## Summary Remove the `tuple_indexing`, `if_let`, and `while_let` feature gates and add them to the language. ## Motivation ### Tuple Indexing This feature has proven to be quite useful for tuples and struct variants, and it allows for the...
## Summary Disallow type/lifetime parameter shadowing. ## Motivation Today we allow type and lifetime parameters to be shadowed. This is a common source of bugs as well as confusing errors. An example of such a confusing case is: ```rust st...
## Summary Change the syntax for dynamically sized type parameters from `Sized? T` to `T: ?Sized`, and change the syntax for traits for dynamically sized types to `trait Foo for ?Sized`. Extend this new syntax to work with `where` clauses....
## Summary Move the `std::ascii::Ascii` type and related traits to a new Cargo package on crates.io, and instead expose its functionality for `u8`, `[u8]`, `char`, and `str` types. ## Motivation The `std::ascii::Ascii` type is a `u8` wrappe...
## Summary This RFC proposes several new *generic conversion* traits. The motivation is to remove the need for ad hoc conversion traits (like `FromStr`, `AsSlice`, `ToSocketAddr`, `FromError`) whose *sole role* is for generics bounds. Aside...
## Summary Change the precedence of `+` (object bounds) in type grammar so that it is similar to the precedence in the expression grammars. ## Motivation Currently `+` in types has a much higher precedence than it does in expressions. This...
## Summary Move `box` patterns behind a feature gate. ## Motivation A recent RFC (https://github.com/rust-lang/rfcs/pull/462) proposed renaming `box` patterns to `deref`. The discussion that followed indicates that while the language commun...
## Summary Stabilize the `std::fmt` module, in addition to the related macros and formatting language syntax. As a high-level summary: * Leave the format syntax as-is. * Remove a number of superfluous formatting traits (renaming a few in th...
## Summary This RFC reforms the design of the `std::path` module in preparation for API stabilization. The path API must deal with many competing demands, and the current design handles many of them, but suffers from some significant proble...
## Summary Introduce a new thread local storage module to the standard library, `std::tls`, providing: * Scoped TLS, a non-owning variant of TLS for any value. * Owning TLS, an owning, dynamically initialized, dynamically destructed variant...
## Summary I propose altering the `Send` trait as proposed by RFC #17 as follows: * Remove the implicit `'static` bound from `Send`. * Make `&T` `Send` if and only if `T` is `Sync`. ```rust impl<'a, T> !Send for &'a T {} unsafe impl<'a, T>...