I feel like Rust policies are buried in the RFC repo and hard to discover, so I put together this list of RFCs about project policy. I originally had greater ambitions to try to summarize Rust governance but never finished it. Still, these are good to collect somewhere.
- The RFC README. This is the cannonical source for how the RFC process works, including practical advice on effective participation.
- RFC 0002. Established the RFC process. Most information here is probably in the README, which is also more up to date.
- RFC 0344. API naming conventions. Sets out the broad naming conventions used in software created by the Rust Project. Covers referring to types in method names, iterator type names, additional iterator method names, getter/setter APIs, associated types, trait naming, lint naming, suffix ordering, prelude traits.
-
RFC 0430. More API naming conventions. This one includes a
convenient table of the most common ones, how to deal with acronyms
in CamelCase and snake_case,
unwrap_*
andinto_*
methods. - RFC 0505. API commenting conventions.
- RFC 0507. Establishes release channels, Rust’s versioning scheme, feature gates, and the API stabilization cycle.
-
RFC 0529. Conversion traits. Establishes
AsRef
,AsMut
,Into
andFrom
along with conventions on how to use them. - RFC 0531. Clarifies the scope of the RFC process, that it applies to Rust, Cargo, crates.io, and the RFC process itself. Leaving other rust-lang projects out-of-scope and not subject to RFCs.
- RFC 1068. Expands the Rust team beyond the core team, establishes there role. Clarifies various details of the RFC process.
- RFC 1105. API evolution. Describes which API changes are and aren’t allowed according to Rust’s interpretation of semver, and strategies for evolving APIs over time.
- RFC 1122. Language evolution. Describes which language changes are and aren’t allowed according to Rust’s interpretation of semver.
- RFC 1242. Various policies coving the crates that the Rust Project maintains. Establishes rust-lang-nursery.