github.com
## 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...
RFC 450
RFC
2014-12-02
~1 min read
github.com
## 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...
RFC 459
RFC
2014-11-29
~1 min read
github.com
## 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....
RFC 490
RFC
2014-11-29
~5 min read
github.com
## 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...
RFC 486
RFC
2014-11-27
~3 min read
github.com
## 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...
RFC 529
RFC
2014-11-21
~12 min read
github.com
## 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...
RFC 438
RFC
2014-11-18
~1 min read
github.com
## 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...
RFC 469
RFC
2014-11-17
~1 min read
github.com
## 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...
RFC 380
RFC
2014-11-12
~14 min read
github.com
## 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...
RFC 474
RFC
2014-11-12
~13 min read
github.com
## 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...
RFC 461
RFC
2014-11-11
~12 min read
github.com
## 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>...
RFC 458
RFC
2014-11-10
~9 min read
github.com
## 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...
RFC 447
RFC
2014-11-06
~4 min read
github.com
## 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...
RFC 445
RFC
2014-11-05
~4 min read
github.com
## 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...
RFC 446
RFC
2014-11-05
~1 min read
github.com
## 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....
RFC 453
RFC
2014-11-05
~8 min read
github.com
## Summary This RFC proposes a number of design improvements to the `cmp` and `ops` modules in preparation for 1.0. The impetus for these improvements, besides the need for stabilization, is that we've added several important language featu...
RFC 439
RFC
2014-11-03
~12 min read
github.com
## Summary This conventions RFC tweaks and finalizes a few long-running de facto conventions, including capitalization/underscores, and the role of the `unwrap` method. See [this RFC](https://github.com/rust-lang/rfcs/pull/328) for a compet...
RFC 430
RFC
2014-11-02
~2 min read
github.com
## Summary When the compiler generates a dynamic library, alter the default behavior to favor linking all dependencies statically rather than maximizing the number of dynamic libraries. This behavior can be disabled with the existing `-C pr...
RFC 404
RFC
2014-11-01
~5 min read
github.com
## Summary This is a *conventions* RFC for formalizing the basic conventions around error handling in Rust libraries. The high-level overview is: * For *catastrophic errors*, abort the process or fail the task depending on whether any recov...
RFC 236
RFC
2014-10-30
~7 min read
github.com
## Summary Describe the various kinds of type conversions available in Rust and suggest some tweaks. Provide a mechanism for smart pointers to be part of the DST coercion system. Reform coercions from functions to closures. The `transmute`...
RFC 401
RFC
2014-10-30
~15 min read