## 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`...
## 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 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 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 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 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 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 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>...
## Summary Disallow unconstrained type parameters from impls. In practice this means that every type parameter must either: 1. appear in the trait reference of the impl, if any; 2. appear in the self type of the impl; or, 3. be bound as an...
## Summary Various enhancements to macros ahead of their standardization in 1.0. **Note**: This is not the final Rust macro system design for all time. Rather, it addresses the largest usability problems within the limited time frame for 1....
## Summary Remove `\u203D` and `\U0001F4A9` unicode string escapes, and add [ECMAScript 6-style](https://mathiasbynens.be/notes/javascript-escapes#unicode-code-point) `\u{1F4A9}` escapes instead. ## Motivation The syntax of `\u` followed by...
## Summary This is a conventions RFC establishing a definition and naming convention for *extension traits*: `FooExt`. ## Motivation This RFC is part of the ongoing API conventions and stabilization effort. Extension traits are a programmin...