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
github.com
## Summary Add a `regexp` crate to the Rust distribution in addition to a small `regexp_macros` crate that provides a syntax extension for compiling regular expressions during the compilation of a Rust program. The implementation that suppo...
RFC 42
RFC
2014-04-12
~9 min read
github.com
## Summary Split the current libstd into component libraries, rebuild libstd as a facade in front of these component libraries. ## Motivation Rust as a language is ideal for usage in constrained contexts such as embedding in applications, r...
RFC 40
RFC
2014-04-08
~15 min read
github.com
## Summary Check all types for well-formedness with respect to the bounds of type variables. Allow bounds on formal type variable in structs and enums. Check these bounds are satisfied wherever the struct or enum is used with actual type pa...
RFC 34
RFC
2014-04-05
~3 min read
github.com
## Summary This RFC is a proposal to remove the usage of the keyword `priv` from the Rust language. ## Motivation By removing `priv` entirely from the language, it significantly simplifies the privacy semantics as well as the ability to exp...
RFC 26
RFC
2014-03-31
~1 min read
github.com
## Summary Allow attributes on more places inside functions, such as statements, blocks and expressions. ## Motivation One sometimes wishes to annotate things inside functions with, for example, lint `#[allow]`s, conditional compilation `#[...
RFC 16
RFC
2014-03-20
~4 min read
github.com
## Summary Allow attributes on match arms. ## Motivation One sometimes wishes to annotate the arms of match statements with attributes, for example with conditional compilation `#[cfg]`s or with branch weights (the latter is the most import...
RFC 49
RFC
2014-03-20
~1 min read
github.com
## Summary This RFC describes a variety of extensions to allow any method to be used as first-class functions. The same extensions also allow for trait methods without receivers to be invoked in a more natural fashion. First, at present, th...
RFC 132
RFC
2014-03-17
~7 min read
github.com
## Summary The way our intrinsics work forces them to be wrapped in order to behave like normal functions. As a result, rustc is forced to inline a great number of tiny intrinsic wrappers, which is bad for both compile-time performance and...
RFC 8
RFC
2014-03-14
~2 min read