概要: RustのRFCの一覧を作ろうとしたが、あまりに多いのでとりあえず0200までで公開することにした。なお、単に全てのRFCを列挙したいならばここを見ればよい。
このRFCはRustのコミュニティーが管理しているものであり、 “RFC” の元祖であるIETF RFCとは関係ない。いずれもrequest-for-commentの略である。
メタ
スタイル
構文
- RFC 0016 属性を
let文、ブロック、式にも使えるようにする (#![feature(stmt_expr_attributes)]) - RFC 0049 マッチ腕に属性を使えるようにする
- RFC 0059
~T型と~x式を削除し、Box/boxで置き換える - RFC 0063 二重インクルードによる混乱を防ぐため、
mod foo;による外部ファイルの読み込みに制限をつける - RFC 0068
*T型を*const Tにリネーム - RFC 0069 バイトリテラル
b'x'とバイト列リテラルb"Foo"の導入 - RFC 0071
const/static内でも、一定条件下でブロックを使えるようにする - RFC 0085 パターンの位置でマクロを使えるようにする
- RFC 0087 トレイトオブジェクトの追加の境界を
&(Foo : Send + Sync)ではなく&(Foo + Send + Sync)のように指定するようにする - RFC 0090/0021 字句解析器をより単純にする
- RFC 0092
ifやforなどのブロックと紛らわしい場面では構造体の{}を禁止する - RFC 0132 UFCS (
<T as Trait>::sth/<T>::sth) の導入 - RFC 0135
where節の導入 (一部未実装) - RFC 0160
if let構文 - RFC 0164 スライスパターンをfeature gateにする
- RFC 0168
{mod, ..}によりモジュール自体とその中身を同時にインポートする (RFC 0532により廃止) - RFC 0169
use baz = foo::bar;構文を廃止しuse foo::bar as baz;で置き換える - RFC 0179
&pパターンを&pと&mut pパターンに分割し、参照のミュータビリティーに応じて使い分けるようにする - RFC 0184
foo.0のように、タプル/タプル構造体のフィールドに整数でアクセスできるようにする - RFC 0194
#[cfg(...)]の構文の整理 - RFC 0198
foo[]/foo[n..m]/foo[n..]/foo[..n]のためのトレイトSlice/SliceMutを導入 (RFC 0439により廃止:foo[]はfoo[..]になり、..は[]と独立な構文になった)
意味論・型システム
- RFC 0001 構造体フィールドの可視性をデフォルトでprivateにする。
- RFC 0003 未使用の属性のチェック方法を改善する
- RFC 0008
extern "rust-intrinsic"の廃止 (破棄) - RFC 0019 既定実装
impl Send for .. {}, 否定実装impl !Send for T {}によりSend/Syncをライブラリレベルで実現する (#![feature(optin_builtin_traits)]) - RFC 0026
enumのバリアントの可視性を常にpublicにし、privキーワードを廃止する。 - RFC 0034/0011
struct/enumの型引数に境界T: Traitを書けるようにし、それが充足されていることを利用側で検査する。 - RFC 0048 トレイト周りの整理:
selfの一般化、coherence条件の整理、トレイト選択アルゴリズムの改善など - RFC 0066 一時的な値に対する参照を間接的に取った場合も、直接取った場合と同様にその生存期間を延長できるようにする
- RFC 0079
#[repr(C)]などで明示しない限り、構造体レイアウトは入れ替えられる可能性がある - RFC 0107 パターンマッチのガード内でムーブ束縛された変数を使う (未実装)
- RFC 0109 バージョン込みでcrateを指定できるcrate idを廃止して、ソースコードレベルではcrateの名前だけを指定するようにする
- RFC 0111
IndexをIndex/IndexMutに分割する - RFC 0112/0033
Box<T>から&mut Tへの型強制の廃止(DerefMut型強制とは別) (RFC 0139も参照) - RFC 0114 クロージャの整理: unboxed closureのための
Fn/FnMut/FnOnceトレイトの導入、procの削除、クロージャ型を削除して|_| -> _を構文糖衣に変更(構文糖衣は現在は廃止)、キャプチャー方式の指定、レシーバモードの明示(現在は廃止) - RFC 0115 整数リテラル型がデフォルトで
i32にフォールバックしないようにする (RFC 0212により廃止) - RFC 0116
use/let等による同レベルシャドウイングの廃止 (現在はglob importの復活により、globのshadowingが可能) - RFC 0130 ボローチェッカーにおける
Box<T>の特別扱いの廃止 - RFC 0136 publicな定義の型にprivateな型を使うのを禁止する
- RFC 0139
Box<T>から&Tへの型強制の廃止 (Deref型強制とは別) (RFC 0112も参照) - RFC 0141 生存期間の省略規則の整理
- RFC 0151 クロージャで
refを指定しない限りムーブキャプチャーする (RFC 0231により廃止) - RFC 0155 固有実装は該当の型と同じモジュールでのみ可能 (RFC 0735により廃止)
- RFC 0192 トレイトオブジェクト型の生存期間 (RFC 0599も参照)
- RFC 0195 関連型・関連定数・関連生存期間 (関連生存期間は未実装)
ライブラリ
- RFC 0040
libstdの実装をlibcore,liballoc,liblibcなどのライブラリに分割する。 - RFC 0042/0007
regexcrateの同梱 (現在は同梱されていない) - RFC 0050 デバッグモードでのみ有効化される
debug_assert!()の導入 - RFC 0060
StrBufをStringにリネーム - RFC 0093
println!やformat!から地域化の機能を削除し、構文を整理 - RFC 0100
PartialOrd::partial_cmpを追加 - RFC 0123
ShareをSyncにリネーム