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
github.com
## Summary Simplify Rust's lexical syntax to make tooling easier to use and easier to define. ## Motivation Rust's lexer does a lot of work. It un-escapes escape sequences in string and character literals, and parses numeric literals of 4 d...
RFC 90
RFC
2014-05-23
~3 min read
github.com
## Summary Generalize the `#[macro_registrar]` feature so it can register other kinds of compiler plugins. ## Motivation I want to implement [loadable lints](https://github.com/mozilla/rust/issues/14067) and use them for project-specific st...
RFC 86
RFC
2014-05-22
~1 min read
github.com
## Summary Bounds on trait objects should be separated with `+`. ## Motivation With DST there is an ambiguity between the following two forms: trait X { fn f(foo: b); } and trait X { fn f(Trait: Share); } See Rust issue #12778 for details....
RFC 87
RFC
2014-05-22
~1 min read
github.com
## Summary Allow macro expansion in patterns, i.e. ~~~ .rs match x { my_macro!() => 1, _ => 2, } ~~~ ## Motivation This is consistent with allowing macros in expressions etc. It's also a year-old [open issue](https://github.com/mozilla/rust...
RFC 85
RFC
2014-05-21
~1 min read
github.com
## Summary Leave structs with unspecified layout by default like enums, for optimisation purposes. Use something like `#[repr(C)]` to expose C compatible layout. ## Motivation The members of a struct are always laid in memory in the order i...
RFC 79
RFC
2014-05-17
~3 min read
github.com
## Summary Allow block expressions in statics, as long as they only contain items and a trailing const expression. Example: ```rust static FOO: uint = { 100 }; static BAR: fn() -> int = { fn hidden() -> int { 42 } hidden }; ``` ## Motivatio...
RFC 71
RFC
2014-05-07
~2 min read
github.com
## Summary Add ASCII byte literals and ASCII byte string literals to the language, similar to the existing (Unicode) character and string literals. Before the RFC process was in place, this was discussed in [#4334](https://github.com/mozill...
RFC 69
RFC
2014-05-05
~2 min read
github.com
## Summary Temporaries live for the enclosing block when found in a let-binding. This only holds when the reference to the temporary is taken directly. This logic should be extended to extend the cleanup scope of any temporary whose lifetim...
RFC 66
RFC
2014-05-04
~1 min read
github.com
## Summary The rules about the places `mod foo;` can be used are tightened to only permit its use in a crate root and in `mod.rs` files, to ensure a more sane correspondence between module structure and file system hierarchy. Most notably,...
RFC 63
RFC
2014-05-02
~1 min read
github.com
## Summary The tilde (`~`) operator and type construction do not support allocators and therefore should be removed in favor of the `box` keyword and a language item for the type. ## Motivation * There will be a unique pointer type in the s...
RFC 59
RFC
2014-04-30
~1 min read
github.com
## Summary `StrBuf` should be renamed to `String`. ## Motivation Since `StrBuf` is so common, it would benefit from a more traditional name. ## Drawbacks It may be that `StrBuf` is a better name because it mirrors Java `StringBuilder` or C#...
RFC 60
RFC
2014-04-30
~1 min read
github.com
## Summary Asserts are too expensive for release builds and mess up inlining. There must be a way to turn them off. I propose macros `debug_assert!` and `assert!`. For test cases, `assert!` should be used. ## Motivation Asserts are too expe...
RFC 50
RFC
2014-04-18
~1 min read