github.com
## Summary Closures should capture their upvars by value unless the `ref` keyword is used. ## Motivation For unboxed closures, we will need to syntactically distinguish between captures by value and captures by reference. ## Detailed design...
RFC 151
RFC
2014-07-02
~1 min read
github.com
## Summary Change the semantics of the built-in fixed-size integer types from being defined as wrapping around on overflow to it being considered a program error (but *not* undefined behavior in the C sense). Implementations are *permitted*...
RFC 560
RFC
2014-06-30
~18 min read
github.com
## Summary Remove the coercion from `Box<T>` to `&T` from the language. ## Motivation The coercion between `Box<T>` to `&T` is not replicable by user-defined smart pointers and has been found to be rarely used [1]. We already removed the co...
RFC 139
RFC
2014-06-25
~1 min read
github.com
## Summary * Remove the `crate_id` attribute and knowledge of versions from rustc. * Add a `#[crate_name]` attribute similar to the old `#[crate_id]` attribute * Filenames will no longer have versions, nor will symbols * A new flag, `--exte...
RFC 109
RFC
2014-06-24
~7 min read
github.com
## Summary Require a feature gate to expose private items in public APIs, until we grow the appropriate language features to be able to remove the feature gate and forbid it entirely. ## Motivation Privacy is central to guaranteeing the inv...
RFC 136
RFC
2014-06-24
~7 min read
github.com
## Summary This RFC proposes to 1. Expand the rules for eliding lifetimes in `fn` definitions, and 2. Follow the same rules in `impl` headers. By doing so, we can avoid writing lifetime annotations ~87% of the time that they are currently r...
RFC 141
RFC
2014-06-24
~9 min read
github.com
## Summary *Note:* This RFC discusses the behavior of `rustc`, and not any changes to the language. Change how target specification is done to be more flexible for unexpected usecases. Additionally, add support for the "unknown" OS in targe...
RFC 131
RFC
2014-06-18
~3 min read
github.com
## Summary Rename the `Share` trait to `Sync` ## Motivation With interior mutability, the name "immutable pointer" for a value of type `&T` is not quite accurate. Instead, the term "shared reference" is becoming popular to reference values...
RFC 123
RFC
2014-06-15
~1 min read
github.com
## Summary Remove or feature gate the shadowing of view items on the same scope level, in order to have less complicated semantic and be more future proof for module system changes or experiments. This means the names brought in scope by `e...
RFC 116
RFC
2014-06-12
~6 min read
github.com
## Summary Rename `*T` to `*const T`, retain all other semantics of unsafe pointers. ## Motivation Currently the `T*` type in C is equivalent to `*mut T` in Rust, and the `const T*` type in C is equivalent to the `*T` type in Rust. Noticeab...
RFC 68
RFC
2014-06-11
~5 min read
github.com
## Summary Currently we use inference to find the current type of otherwise-unannotated integer literals, and when that fails the type defaults to `int`. This is often felt to be potentially error-prone behavior. This proposal removes the i...
RFC 115
RFC
2014-06-11
~1 min read
github.com
## Summary Cleanup the trait, method, and operator semantics so that they are well-defined and cover more use cases. A high-level summary of the changes is as follows: 1. Generalize explicit self types beyond `&self` and `&mut self` etc, so...
RFC 48
RFC
2014-06-10
~23 min read
github.com
## Summary Do not identify struct literals by searching for `:`. Instead define a sub- category of expressions which excludes struct literals and re-define `for`, `if`, and other expressions which take an expression followed by a block (or...
RFC 92
RFC
2014-06-10
~3 min read
github.com
## Summary Remove localization features from format!, and change the set of escapes accepted by format strings. The `plural` and `select` methods would be removed, `#` would no longer need to be escaped, and `{{`/`}}` would become escapes f...
RFC 93
RFC
2014-06-10
~3 min read
github.com
## Summary `Index` should be split into `Index` and `IndexMut`. ## Motivation Currently, the `Index` trait is not suitable for most array indexing tasks. The slice functionality cannot be replicated using it, and as a result the new `Vec` h...
RFC 111
RFC
2014-06-09
~1 min read
github.com
## Summary Remove the coercion from `Box<T>` to `&mut T` from the language. ## Motivation Currently, the coercion between `Box<T>` to `&mut T` can be a hazard because it can lead to surprising mutation where it was not expected. ## Detailed...
RFC 112
RFC
2014-06-09
~1 min read
github.com
## Summary Add syntax sugar for importing a module and items in that module in a single view item. ## Motivation Make use clauses more concise. ## Detailed design The `mod` keyword may be used in a braced list of modules in a `use` item to...
RFC 168
RFC
2014-06-06
~1 min read
github.com
## Summary Rust currently forbids pattern guards on match arms with move-bound variables. Allowing them would increase the applicability of pattern guards. ## Motivation Currently, if you attempt to use guards on a match arm with a move-bou...
RFC 107
RFC
2014-06-05
~3 min read
github.com
## Summary Add a `partial_cmp` method to `PartialOrd`, analogous to `cmp` in `Ord`. ## Motivation The `Ord::cmp` method is useful when working with ordered values. When the exact ordering relationship between two values is required, `cmp` i...
RFC 100
RFC
2014-06-01
~2 min read
github.com
## Summary Allow users to load custom lints into `rustc`, similar to loadable syntax extensions. ## Motivation There are many possibilities for user-defined static checking: * Enforcing correct usage of Servo's [JS-managed pointers](https:/...
RFC 89
RFC
2014-05-23
~4 min read