github.com
## Summary Introduce the method `split_at(&self, mid: usize) -> (&str, &str)` on `str`, to divide a slice into two, just like we can with `[T]`. ## Motivation Adding `split_at` is a measure to provide a method from `[T]` in a version that m...
RFC 1123
RFC
2015-05-17
~2 min read
github.com
## Summary Add an `expect` method to the Result type, bounded to `E: Debug` ## Motivation While `Result::unwrap` exists, it does not allow annotating the panic message with the operation attempted (e.g. what file was being opened). This is...
RFC 1119
RFC
2015-05-13
~1 min read
github.com
## Summary This RFC has the goal of defining what sorts of breaking changes we will permit for the Rust language itself, and giving guidelines for how to go about making such changes. ## Motivation With the release of 1.0, we need to establ...
RFC 1122
RFC
2015-05-07
~12 min read
github.com
## Summary This RFC proposes a comprehensive set of guidelines for which changes to *stable* APIs are considered breaking from a semver perspective, and which are not. These guidelines are intended for both the standard library and for the...
RFC 1105
RFC
2015-05-04
~24 min read
github.com
## Summary Rename `.connect()` to `.join()` in `SliceConcatExt`. ## Motivation Rust has a string concatenation method named `.connect()` in `SliceConcatExt`. However, this does not align with the precedents in other languages. Most language...
RFC 1102
RFC
2015-05-02
~1 min read
github.com
## Summary Remove the `static_assert` feature. ## Motivation To recap, `static_assert` looks like this: ```rust #![feature(static_assert)] #[static_assert] static assertion: bool = true; ``` If `assertion` is `false` instead, this fails to...
RFC 1096
RFC
2015-04-28
~1 min read
github.com
## Summary Alter the signature of the `std::mem::forget` function to remove `unsafe`. Explicitly state that it is not considered unsafe behavior to not run destructors. ## Motivation It was [recently discovered][scoped-bug] by @arielb1 that...
RFC 1066
RFC
2015-04-15
~4 min read
github.com
## Summary Add the `Sync` bound to `io::Error` by requiring that any wrapped custom errors also conform to `Sync` in addition to `error::Error + Send`. ## Motivation Adding the `Sync` bound to `io::Error` has 3 primary benefits: * Values th...
RFC 1057
RFC
2015-04-11
~2 min read
github.com
## Summary Replace `slice.tail()`, `slice.init()` with new methods `slice.split_first()`, `slice.split_last()`. ## Motivation The `slice.tail()` and `slice.init()` methods are relics from an older version of the slice APIs that included a `...
RFC 1058
RFC
2015-04-11
~2 min read
github.com
## Summary Rename or replace `str::words` to side-step the ambiguity of “a word”. ## Motivation The [`str::words`](http://doc.rust-lang.org/std/primitive.str.html#method.words) method is currently marked `#[unstable(reason = "the precise al...
RFC 1054
RFC
2015-04-10
~1 min read
github.com
## Summary Deprecate `std::fs::soft_link` in favor of platform-specific versions: `std::os::unix::fs::symlink`, `std::os::windows::fs::symlink_file`, and `std::os::windows::fs::symlink_dir`. ## Motivation Windows Vista introduced the abilit...
RFC 1048
RFC
2015-04-09
~6 min read
github.com
## 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...
RFC 1047
RFC
2015-04-08
~4 min read
github.com
## 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...
RFC 1044
RFC
2015-04-04
~16 min read
github.com
## 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...
RFC 1030
RFC
2015-04-03
~1 min read
github.com
## 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...
RFC 1023
RFC
2015-03-27
~9 min read
github.com
## 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...
RFC 1014
RFC
2015-03-25
~2 min read
github.com
## 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...
RFC 1011
RFC
2015-03-24
~2 min read
github.com
## 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...
RFC 1040
RFC
2015-03-24
~7 min read
github.com
## 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,...
RFC 968
RFC
2015-03-16
~1 min read
github.com
## 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/...
RFC 982
RFC
2015-03-16
~6 min read