## Summary Add sockopt-style timeouts to `std::net` types. ## Motivation Currently, operations on various socket types in `std::net` block indefinitely (i.e., until the connection is closed or data is transferred). But there are many contex...
## Summary Expand the scope of the `std::fs` module by enhancing existing functionality, exposing lower-level representations, and adding a few new functions. ## Motivation The current `std::fs` module serves many of the basic needs of inte...
## Summary Add `Default`, `IntoIterator` and `ToOwned` trait to the prelude. ## Motivation Each trait has a distinct motivation: * For `Default`, the ergonomics have vastly improved now that you can write `MyType::default()` (thanks to UFCS...
## Summary This RFC proposes two rule changes: 1. Modify the orphan rules so that impls of remote traits require a local type that is either a struct/enum/trait defined in the current crate `LT = LocalTypeConstructor<...>` or a reference to...
## Summary When calling `println!` it currently causes a panic if `stdout` does not exist. Change this to ignore this specific error and simply void the output. ## Motivation On Linux `stdout` almost always exists, so when people write game...
## Summary Add a function to the `std::process` module to exit the process immediately with a specified exit code. ## Motivation Currently there is no stable method to exit a program in Rust with a nonzero exit code without panicking. The c...
## Summary This RFC suggests stabilizing a reduced-scope `Duration` type that is appropriate for interoperating with various system calls that require timeouts. It does not stabilize a large number of conversion methods in `Duration` that h...
## Summary Restrict closure return type syntax for future compatibility. ## Motivation Today's closure return type syntax juxtaposes a type and an expression. This is dangerous: if we choose to extend the type grammar to be more acceptable,...
## Summary Custom coercions allow smart pointers to fully participate in the DST system. In particular, they allow practical use of `Rc<T>` and `Arc<T>` where `T` is unsized. This RFC subsumes part of [RFC 401 coercions](https://github.com/...
## Summary Make the `count` parameter of `SliceExt::splitn`, `StrExt::splitn` and corresponding reverse variants mean the *maximum number of items returned*, instead of the *maximum number of times to match the separator*. ## Motivation The...
## Summary Rust's `Write` trait has the `write_all` method, which is a convenience method that writes a whole buffer, failing with `ErrorKind::WriteZero` if the buffer cannot be written in full. This RFC proposes adding its `Read` counterpa...
## Summary Add the family of `[Op]Assign` traits to allow overloading assignment operations like `a += b`. ## Motivation We already let users overload the binary operations, letting them overload the assignment version is the next logical s...
## Summary Disallow hyphens in Rust crate names, but continue allowing them in Cargo packages. ## Motivation This RFC aims to reconcile two conflicting points of view. First: hyphens in crate names are awkward to use, and inconsistent with...
## Summary Replace `Entry::get` with `Entry::or_insert` and `Entry::or_insert_with` for better ergonomics and clearer code. ## Motivation Entry::get was introduced to reduce a lot of the boiler-plate involved in simple Entry usage. Two incr...
## Summary This RFC proposes to expand, and make more explicit, Rust's governance structure. It seeks to supplement today's core team with several *subteams* that are more narrowly focused on specific areas of interest. *Thanks to Nick Came...
## Summary Move the contents of `std::thread_local` into `std::thread`. Fully remove `std::thread_local` from the standard library. ## Motivation Thread locals are directly related to threading. Combining the modules would reduce the number...
## Summary Allow marking free functions and inherent methods as `const`, enabling them to be called in constants contexts, with constant arguments. ## Motivation As it is right now, `UnsafeCell` is a stabilization and safety hazard: the fie...
## Summary Allow inherent implementations on types outside of the module they are defined in, effectively reverting [RFC PR 155](https://github.com/rust-lang/rfcs/pull/155). ## Motivation The main motivation for disallowing such `impl` bodi...
## Summary Add intrinsics for single-threaded memory fences. ## Motivation Rust currently supports memory barriers through a set of intrinsics, `atomic_fence` and its variants, which generate machine instructions and are suitable as cross-p...
## Summary Support the `#[must_use]` attribute on arbitrary functions, to make the compiler lint when a call to such a function is ignored. Mark `PartialEq::{eq, ne}` `#[must_use]` as well as `PartialOrd::{lt, gt, le, ge}`. ## Motivation Th...