I have included the more recent contributions of @matthewjasper, which brought us up to (roughly) the August timeframe for RFCs. I added all additional RFCs which had been accepted as of 21 Jan 2018.
With full credit where it is due: to @EH2406, who put the original together (here). Note that I'm doing a quick pass and confirming each of these as I get to them.
- Not Reviewed at all: I simply added items in this list which weren't already in this document. I haven't determined what their stability status is, or whether any documentation exists for them yet
- Need documentation: I (or someone else) determined that the feature is stabilized but no documentation for the feature exists in either the reference or libstd docs. They need documentation as soon as possible.
- If an item is crossed off, I think that means some documentation exists (but maybe it isn't sufficient?). We should double check these struck-off items, move them to the appropriate section, depending on where its documentation lives, give it a link to said documentation, and uncross it.
- Reviewed with no conclusion: Apparently, the RFC was examined, some research was done into its stability status and whether docs exist, but nothing conclusive was found.
- Still need review: Insufficient review into the RFC's status has been conducted. Take a look and see what you can find out, then move the RFC link to the appropriate section.
- Reviewed, not yet stabilized: Research has shown that the RFC is still unstable. You could write docs for one of these items, but since the feature isn't stable, it's lower priority than already-stabilized, undocumented features.
- Documentation not required: These items either don't require documentation at all because of the nature of the RFC or documentation has already been written. Please move items here as you find out docs exist in libstd or the reference.
- #1725: unaligned-access
- #1728: north-star
- #1758: repr-transparent
- #1774: roadmap-2017
- #1789: as-cell
- #1824: crates.io-default-ranking
- #1826: change-doc-default-urls
- #1828: rust-bookshelf
- #1849: non-static-type-id
- #1857: stabilize-drop-order
- #1859: try-trait
- #1861: extern-types
- #1925: optional-match-vert
- #1937: ques-in-main
- #1940: must-use-functions
- #1946: intra-rustdoc-links
- #1951: expand-impl-trait
- #1961: clamp
- #1966: unsafe-pointer-reform
- #1969: cargo-prepublish
- #1974: global-allocators
- #1977: public-private-dependencies
- #1983: nursery-deprecation
- #1985: tiered-browser-support
- #1990: external-doc-attribute
- #2000: const-generics
- #2005: match-ergonomics
- #2008: non-exhaustive
- #2011: generic-assert
- #2025: nested-method-calls
- #2027: object_safe_for_dispatch
- #2033: experimental-coroutines
- #2043: is-aligned-intrinsic
- #2044: license-rfcs
- #2045: target-feature
- #2052: epochs
- #2057: refcell-replace
- #2070: panic-implementation
- #2071: impl-trait-type-alias
- #2086: allow-if-let-irrefutables
- #2089: implied-bounds
- #2093: infer-outlives
- #2094: nll
- #2103: tool-attributes
- #2113: dyn-trait-syntax
- #2115: argument-lifetimes
- #2124: option-filter
- #2126: path-clarity
- #2128: use-nested-groups
- #2132: copy-closures
- #2133: all-the-clones
- #2137: variadic
- #2141: alternative-registries
#0092: struct-grammar: Restriction isn't documented.#0116: no-module-shadowing 6.1.2 somewhat implies this, but doesn't state it explicity.- #0136: no-privates-in-public (Not the full set of rules)
- #0141: lifetime-elision documented in the nomicon and book but it is not in the reference
- #0179: and-mut-patterns due to lack of pattern documentation.
#0184: tuple-accessors- #0192: bounds-on-object-and-generic-types
- #0213: defaulted-type-params
#0218: empty-struct-with-braces 6.1.5 could be clearer here, 7.2.4 is fine though.- #0234: variants-namespace
- #0241: deref-conversions 8.3.2 is missing one (arguably)
#0255: object-safety 8.1.11 links to the RFC.- #0326: restrict-xXX-to-ascii doc in 3.5.1.2.3 Character escapes
#0342: keywords in The grammar 3.5.1, but this surely deserves to be in the reference.- #0387: higher-ranked-trait-bounds only in the nomicon and new book
- #0401: coercions, partially documented, but (a) semantics of the coercions and (b)
kinds of andsemantics of casts are both undocumented *? - #0447: no-unused-impl-parameters
- #0459: disallow-shadowing
#0490: dst-syntax#0546: Self-not-sized-by-default#0599: default-object-bound and #1156: adjust-default-object-bounds- #0735: allow-inherent-impls-anywhere, #1023: rebalancing-coherence orphan rules #1268: allow-overlapping-impls-on-marker-traits (unimplemented issue), all related and not in the reference.
- #0738: variance this is in the nomicon to some extent.
- #0940: hyphens-considered-harmful partially in 6.1.2.1, but it links to the RFC
#0953: op-assign, the reference ignores this. (std
documentation exists though)- #1014: stdout-existential-crisis requires documentation in std.
#1135: raw-pointer-comparisons existence is documented in std, semantics are not documented anywhere though.- #1174: into-raw-fd-socket-handle-traits in unix::io::AsRawFd, std/os/windows/io/trait.AsRawSocket.html, std/os/windows/io/trait.AsRawHandle.html, last two are really minimal though (and need to use local copy of docs).
- #1184: stabilize-no_std 6.3.13 isn't enough and claims that
core
is unstable. - #1270: deprecation in 6.3.7, very minimal. Enhanced docs in this PR.
- #1492: dotdot-in-patterns tracking issue 7.2.22 needs examples and to say more.
#1506: adt-kinds
closures are documented in 8.1.10 Closure types and 7.2.15 Lambda expressions. It neads to cover all the changes in:
I've put these here as the macro documentation in the Reference isn't that great and probably needs a rewrite.
- #0085: pattern-macros
- #0378: expr-macros
- #0453: macro-reform
- #0550: macro-future-proofing wow, I don't get this one.
- #0873: type-macros
- #1681: macros-1.1 stable in 1.15
- #0195: associated-items
- #0517: io-os-reform is enormous, but it seems to be mostly libs stuff, here are most of the relevant sections:
- Ext traits no longer exist as
where Self: Sized
can be used instead. - io::Read and io::Write traits in
std
documentation - std::ffi is where OsString and OsStr live now.
core::io
doesn't exist- Free functions in
io
includes both helpers andstd*
functions - io::BufRead
- io::Cursor
- io::Error
ChanReader
andChanWriter
were removed at some point- "Windows and stdio" - I couldn't find this documented in the obvious places
_print
is indeed hidden and unstable.- std::env
- std::fs
- std::net
- std::process
- std::os
- std::io::prelude
- Ext traits no longer exist as
- #0243: trait-based-exception-handling The "?", not entirely implemented.
- #1257: drain-range-2 partially stabilized.
- Drain methods are stable e.g. VecDeque::drain, HashMap::drain
- RangeArgument is unstable
- #0212: restore-int-fallback in 3.5.1.4 subject to this issue
- #1291: promote-libc are the libc docs ok for this?
- #1415: trim-std-os stable in 1.8 in std::os::unix::raw and so on. Windows seems to have not been affected by this?
- #0235: collections-conventions "This is a combined conventions and library stabilization RFC." so I am also adding it to the conventions list. See also 509. Some useful links to check:
- #0458: send-improvements Send and Sync library docs cover some of this. Does the Refernce need to say more though?
- #1252: open-options partially stabilized. This RFC is documentation?
- #1717: dllimport partially insta-stable
- #0587: fn-return-should-be-an-associated-type FnOnce::Output covers this as far as it's a library issue.
- #0982: dst-coercion both lib and lang? ops::CoerceUnsized for libs, the Reference isn't clear here, and misses implementations for most std smart pointers.
- #0769: sound-generic-drop replaced by 1238
- #1240: repr-packed-unsafe-ref Tracking issue is open, but the segfalts are not seen on playpen.
- #1560: name-resolution first place to check is Visibility and privacy
- #0438: precedence-of-plus
- #0463: future-proof-literal-suffixes
- #0593: forbid-Self-definitions
- #0879: small-base-lexing
- #0087: trait-bounds-with-plus
- #0090: lexical-syntax-simplification
- Lexical syntax is already documented in the grammar reference, but isn't up-to-date with RFC 0090. Since there's already a lexical syntax section in the Rust Reference, probably just add this to the Reference instead.
- #0404: change-prefer-dynamic
- #1193: cap-lints FCP in pr not issue. It is just a rustc flag.
- #1510: cdylib.md Rename 1510-rdylib.md to 1510-cdylib
- #1513: less-unwinding
Neither of theses are in the reference at all, so it's just a question of do they need docs.
- #0320: nonzeroing-dynamic-drop
- #1300: intrinsic-semantics (only mention in the reference is external blocks)
- #0201: error-chaining (lib docs: std::error::Error, std::try)
- #1044: io-fs-2.1 is long Maybe in std::io and std::fs.
- #1479: unix-socket in os::unix::net, but RFC is long.
- #1200: cargo-install
- #1241: no-wildcard-deps
- #1361: cargo-cfg-dependencies.md Add extension " cargo thing
- #1525: cargo-workspace
- #0086: plugin-registrar This is compiler plugins related.
- #0089: loadable-lints This is compiler plugins related.
- #0107: pattern-guards-with-bind-by-move
- #0469: feature-gate-box-patterns box patterns
- #0528: string-patterns
- #0639: discriminant-intrinsic
- #0809: box-and-in-for-stdlib
- #0888: compiler-fence-intrinsics all intrinsics are unstable
- #0911: const-fn
- #1183: swap-out-jemalloc
- #1192: inclusive-ranges Such bike sheding.
- #1201: naked-fns
- #1210: impl-specialization
- #1211: mir Mir is internal to rustc so may not nead eany docs, and the issue is open.
- out of order 1191-hir.md but hir needs the similar treatment as mir.
- #1216: bang-type is not yet stabilized.
- #1228: placement-left-arrow
- #1238: nonparametric-dropck
- #1298: incremental-compilation
- #1327: dropck-param-eyepatch
- #1399: repr-pack
- #1419: slice-copy
- #1422: pub-restricted
- #1434: contains-method-for-ranges
- #1440: drop-types-in-const
- #1444: union
- #1445: restrict-constants-in-patterns
- #1504: int128
- #1522: conservative-impl-trait
- #1542: try-from
- #1543: integer_atomics
- #1548: global-asm
- #1559: attributes-with-literals
- #1561: macro-naming
- #1581: fused-iterator
- #1696: discriminant
- #1682: field-init-shorthand is going to be covered by #38830
- #0202: subslice-syntax-change (in fact all of slice patterns)
- #0803: type-ascription
- #0495: array-pattern-changes
- #1260: main-reexport unimplemented issue
- #1558: closure to fn coercion
- #1695: add error macro
- #1733: trait alias
- #1845: shared from slice
- #1860: manually drop
- #1866: more readable assert eq
- #1868: portability lint
- #1884: unstable sort
- #0572: rustc-attribute doesn't really need documentation in the reference, since it's about feature gates, which are unstable things.
- #0601: replace-be-with-become The grammar 3.5.1
- #0130: box-not-special removes a special case for
Box<T>
, although some of the other special cases need documenting.
- #0071: const-block-expr in 6.2 Expressions
- #0132: ufcs in 6.2.9 Call expressions
- #0160: if-let documented at 7.2.23 if let expressions
- #0168: mod documented in 5.1.3 Use declarations
- #0169: use-path-as-id documented in 6.2.1 Moudles (this includes
extern crate
as well) - #0194: cfg-syntax 6.3.8
- #0198: slice-notation documented at 8.1.3 Tuple types
- #0246: const-vs-static documented at 6.1.7 Constant items and 6.1.8 Static items
- #0339: statically-sized-literals the part that's implemented (byte string literals) is documented in 3.5.1.3.2
- #0418: struct-variants 6.1.6
- #0501: consistent_no_prelude_attributes unimplemented issue but current behaviour in 6.3.3
- #0522: self-impl in 6.1.9 could also be in 6.1.10, however.
- #0532: self-in-use (formerly
mod
) documented in 5.1.3 Use declarations - #0534: deriving2derive 'derive' is used in all documentation as far as I can tell, see 6.1.2
- #0558: require-parentheses-for-chained-comparisons in 6.2.4 Operator expressions
- #0560: integer-overflow in 11.4 Behavior not considered unsafe
- #0702: rangefull-expression in 7.2.10
- #0736: privacy-respecting-fru in 6.2.7 Struct expressions
- #0968: closure-return-type-syntax in 6.2.12 Closure expressions
- #1219: use-group-as 5.1.3 Use declarations
- #1229: compile-time-asserts in 6.2 Expressions
- #1535: stable-overflow-checks in 6.2.4 Operator expressions
- #1623: static Now in beta reference 5.1
- #1624: loop-break-value in 6.2.13 Loop expressions
- #1665: windows-subsystem in 5.3 Attributes
- #1721: crt-static in 10 Linkage
- #0100: partial-cmp doc in PartialOrd.partial_cmp
- #0111: index-traits doc in IndexMut and Index
- #0216: collection-views entry is docs at hash_map::Entry and btree_map::Entry
- #0221: panic in std::panic
- #0369: num-reform Almost everything here is gone now. Only ToString and FromStr remain.
- #0380: stabilize-std-fmt mostly in std:fmt, connection to std::panic, std::assert and std::debug_assert could be clearer, though.
- #0439: cmp-ops-reform mostly
std
in std::ops and std::cmp. Current expression section is fine for where this becomes a language issue. - #0461: tls-overhaul and #0909: move-thread-local-to-std-thread in std::thread_local and std::thread
- #0474: path-reform in std::path
- #0486: std-ascii-reform in std::ascii::AsciiExt, subject to some slight changes in phrasing on nightly (2017-04-02)
- #0494: c_str-and-c_vec-stability in ffi::Cstring and ffi::Cstr
- #0503: prelude-stabilization in std::prelude (unless the exact motivation for each item needs to be documented)
- #0504: show-stabilization in std::fmt, fmt::Display and fmt::Debug
- #0509: collections-reform-part-2 in std::collections
- #0526: fmt-text-writer fmt::Write
- #0529: conversion-traits in std::convert
- #0574: drain-range std::vec::Vec std::string::String
- #0580: rename-collections docs for std::collections use the new names.
- #0592: c-str-deref in ffi::Cstring and ffi::Cstr only stage 1 is implemented
- #0640: debug-improvements in std::fmt, std::fmt::Debug and std::fmt::Formatter
- #0771: std-iter-once std::iter::once and std::iter::empty
- #0823: hash-simplification in std::hash
- #0832: from-elem-with-love in std::vec
- #0839: embrace-extend-extinguish in the docs of the various types in std::collections
- #0840: no-panic-in-c-string.md Update 0840-no-panic-in-c-string in std::CString::new
- #0921: entry_v3 in collects::hash_map::Entry and collects::btree_map::Entry
- #0979: align-splitn-with-other-languages in str::splitn and slice::splitn
- #0980: read-exact in io::Read
- #1011: process.exit std::process::exit
- #1030: prelude-additions in std::prelude
- #1040: duration-reform in time::Duration
- #1047: socket-timeouts in net::UdpSocket and net::TcpStream
- #1048: rename-soft-link-to-symlink in std::fs::soft_link, std::os::unix::fs and std/os/windows/fs/index.html on windows (online docs only show linux)
- #1152: slice-string-symmetry in str and std::string::String
- #1194: set-recovery stable in 1.9 collectios::BTreeSet and collectios::HashSet, although they could do with some examples
- #1212: line-endings in str::lines, io::BufRead::lines and io::Stdin::read_line
- #1236: stabilize-catch-panic in std::panic
- #1288: time-improvements in std::time (apart from a few methods that don't exist)
- #1307: osstring-methods ffi::OsString
- #1328: global-panic-handler in std::panic
- #1359: process-ext-unix in std::os::Unix::process::CommandExt
- #1443: extended-compare-and-swap in sync::atomic::Atomic*
- #1461: net2-mutators in net::TcpListener, net::TcpStream and net::UdpSocket (apart from deprecated, not intended to be removed methods)
- #1467: volatile ptr::read_volatile, ptr::write_volatile as well as the intrinsics: load and store
- #1498: ipv6addr-octets docs at std::net::Ipv6Addr.octets
- #1521: copy-clone-semantics docs at std::clone::Clone, but dose it nead to be in the Reference?
- #1552: contains-method-for-various-collections in collections::VecDeque collections::LinkedList
- #1649: atomic-access stable in 1.15, documented in std::sync::atomic::AtomicUsize and similar.
- #1653: assert_ne in std std::assert_ne
- #1660: try-borrow in std::cell::RefCell
- #1679: panic-safe-slicing stable part in slice::get, unstable part in slice::SliceIndex
- #1869: eprintln in std::eprintln, eprint in std::eprint, and in 12.6 of The Book, 2nd ed.