## 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 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...
## 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 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 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...
## 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...
## 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...
## 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...
## 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`...
## Summary Overhaul the `build` command internally and establish a number of conventions around build commands to facilitate linking native code to Cargo packages. 1. Instead of having the `build` command be some form of script, it will be...
## Summary This is a combined *conventions* and *library stabilization* RFC. The goal is to establish a set of naming and signature conventions for `std::collections`. The major components of the RFC include: * Removing most of the traits i...
## Summary This RFC describes changes to the Rust release process, primarily the division of Rust's time-based releases into 'release channels', following the 'release train' model used by e.g. Firefox and Chrome; as well as 'feature stagin...
## Summary Just like structs, variants can come in three forms - unit-like, tuple-like, or struct-like: ```rust enum Foo { Foo, Bar(int, String), Baz { a: int, b: String } } ``` The last form is currently feature gated. This RFC proposes to...
# Module system cleanups - Start Date: 2014-10-10 - RFC PR: [rust-lang/rfcs#385](https://github.com/rust-lang/rfcs/pull/385) - Rust Issue: [rust-lang/rust#18219](https://github.com/rust-lang/rust/issues/18219) ## Summary - Lift the hard ord...
## Summary This is a conventions RFC for settling a number of remaining naming conventions: * Referring to types in method names * Iterator type names * Additional iterator method names * Getter/setter APIs * Associated types * Trait naming...
## Summary This is a conventions RFC that proposes that the items exported from a module should *never* be prefixed with that module name. For example, we should have `io::Error`, not `io::IoError`. (An alternative design is included that s...
## Summary * Remove reflection from the compiler * Remove `libdebug` * Remove the `Poly` format trait as well as the `:?` format specifier ## Motivation In ancient Rust, one of the primary methods of printing a value was via the `%?` format...
## Summary - Add the ability to have trait bounds that are polymorphic over lifetimes. ## Motivation Currently, closure types can be polymorphic over lifetimes. But closure types are deprecated in favor of traits and object types as part of...
## Summary Parse macro invocations with parentheses or square brackets as expressions no matter the context, and require curly braces or a semicolon following the invocation to invoke a macro as a statement. ## Motivation Currently, macros...
## Summary This is a *conventions RFC* for settling the location of `unsafe` APIs relative to the types they work with, as well as the use of `raw` submodules. The brief summary is: * Unsafe APIs should be made into methods or static functi...