github.com
## Summary [summary]: #summary Add the method `Option::filter<P>(self, predicate: P) -> Self` to the standard library. This method makes it possible to easily throw away a `Some` value depending on a given predicate. The call `opt.filter(p)...
RFC 2124
RFC
2017-08-21
~4 min read
github.com
## Summary [summary]: #summary Support defining C-compatible variadic functions in Rust, via new intrinsics. Rust currently supports declaring external variadic functions and calling them from unsafe code, but does not support writing such...
RFC 2137
RFC
2017-08-21
~8 min read
github.com
## Summary [summary]: #summary Add minimal support for fallible allocations to the standard collection APIs. This is done in two ways: * For users with unwinding, an `oom=panic` configuration is added to make global allocators panic on oom....
RFC 2116
RFC
2017-08-18
~24 min read
github.com
## Summary [summary]: #summary Introduce a new `dyn Trait` syntax for trait objects using a contextual `dyn` keyword, and deprecate "bare trait" syntax for trait objects. In a future edition, `dyn` will become a proper keyword and a lint ag...
RFC 2113
RFC
2017-08-17
~8 min read
github.com
## Summary [summary]: #summary Eliminate the need for separately binding lifetime parameters in `fn` definitions and `impl` headers, so that instead of writing: ```rust fn two_args<'b>(arg1: &Foo, arg2: &'b Bar) -> &'b Baz fn two_lifetimes<...
RFC 2115
RFC
2017-08-17
~14 min read
github.com
## Summary [summary]: #summary Allow unnamed fields of `struct` and `union` type, contained within an outer struct or union; the fields they contain appear directly within the containing structure, with the use of `union` and `struct` deter...
RFC 2102
RFC
2017-08-05
~18 min read
github.com
## Summary [summary]: #summary Remove the need for explicit `T: 'x` annotations on structs. We will infer their presence based on the fields of the struct. In short, if the struct contains a reference, directly or indirectly, to `T` with li...
RFC 2093
RFC
2017-08-02
~17 min read
github.com
## Summary [summary]: #summary Extend Rust's borrow system to support **non-lexical lifetimes** -- these are lifetimes that are based on the control-flow graph, rather than lexical scopes. The RFC describes in detail how to infer these new,...
RFC 2094
RFC
2017-08-02
~67 min read
github.com
## Summary [summary]: #summary Enable accurate caller location reporting during panic in `{Option, Result}::{unwrap, expect}` with the following changes: 1. Support the `#[track_caller]` function attribute, which guarantees a function has a...
RFC 2091
RFC
2017-07-31
~31 min read
github.com
## Summary [summary]: #summary Eliminate the need for “redundant” bounds on functions and impls where those bounds can be inferred from the input types and other trait bounds. For example, in this simple program, the impl would no longer re...
RFC 2089
RFC
2017-07-28
~19 min read
github.com
## Summary [summary]: #summary Currently when using an if let statement and an irrefutable pattern (read always match) is used the compiler complains with an `E0162: irrefutable if-let pattern`. The current state breaks macros who want to a...
RFC 2086
RFC
2017-07-27
~2 min read
github.com
## Summary [summary]: #summary Add the ability to create named existential types and support `impl Trait` in `let`, `const`, and `static` declarations. ```rust // existential types existential type Adder: Fn(usize) -> usize; fn adder(a: usi...
RFC 2071
RFC
2017-07-20
~15 min read
github.com
## Summary [summary]: #summary Provide a stable mechanism to specify the behavior of `panic!` in no-std applications. ## Motivation [motivation]: #motivation The `#![no_std]` attribute was stabilized some time ago and it made possible to bu...
RFC 2070
RFC
2017-07-19
~5 min read
github.com
## Summary [summary]: #summary Allow constraints to appear in where clauses which are trivially known to either always hold or never hold. This would mean that `impl Foo for Bar where i32: Iterator` would become valid, and the impl would ne...
RFC 2056
RFC
2017-07-05
~2 min read
github.com
## Summary [summary]: #summary Introduce a move to dual-MIT/Apache2 licensing terms to the Rust RFCs repo, by requiring them for all new contributions, and asking previous contributors to agree on the new license. ## Disclaimer [disclaimer]...
RFC 2044
RFC
2017-06-26
~3 min read
github.com
## Motivation and Summary [summary]: #summary While architectures like `x86_64` or `ARMv8` define the lowest-common denominator of instructions that all CPUs must support, many CPUs extend these with vector ([AVX](https://en.wikipedia.org/w...
RFC 2045
RFC
2017-06-26
~20 min read
github.com
## Summary [summary]: #summary Allow a `break` of labelled blocks with no loop, which can carry a value. ## Motivation [motivation]: #motivation In its simplest form, this allows you to terminate a block early, the same way that `return` al...
RFC 2046
RFC
2017-06-26
~3 min read
github.com
## Summary [summary]: #summary Rust's ecosystem, tooling, documentation, and compiler are constantly improving. To make it easier to follow development, and to provide a clear, coherent "rallying point" for this work, this RFC proposes that...
RFC 2052
RFC
2017-06-26
~23 min read
github.com
## Summary [summary]: #summary Add an intrinsic (`fn align_offset(ptr: *const (), align: usize) -> usize`) which returns the number of bytes that need to be skipped in order to correctly align the pointer `ptr` to `align`. The intrinsic is...
RFC 2043
RFC
2017-06-20
~7 min read
github.com
## Summary [summary]: #summary This is an **experimental RFC** for adding a new feature to the language, coroutines (also commonly referred to as generators). This RFC is intended to be relatively lightweight and bikeshed free as it will be...
RFC 2033
RFC
2017-06-15
~16 min read