The official Google Rust style guide page outlines rules for code organization, formatting, and safety.
*Google's new Rust style guide aims to lock in readability, maintainability, and large‑scale change readiness across its massive code estates. The document blends public Rust conventions with internal mandates, targeting Android, ChromeOS, Fuchsia, and Chrome.*
Google has published a comprehensive Rust style guide, extending its long‑standing emphasis on code hygiene into the fast‑growing Rust ecosystem. The document is not a mere formatting checklist; it dictates API design, module layout, naming conventions, and safety practices. By anchoring Rust work in Android, ChromeOS, Fuchsia, and Chrome to a single set of rules, Google hopes to cut the friction that plagues large‑scale refactors. The guide promises to make code reviews faster, large‑scale changes smoother, and long‑term maintenance less error‑prone.
The guide defines API design, code organization, formatting, ownership, error handling, traits, concurrency, macros, documentation, unsafe code, and implementation concerns. It insists on small crates, flat file layouts for rust_library sources, and naming source files after the primary user‑defined item. APIs must live in leaf modules; glob imports are banned. Imports should be scoped to a single module, and top‑level function calls must be qualified. Type names are imported unqualified, and the appropriate import mechanism is enforced. Formatting is delegated to rustfmt, with optional opt‑out. Ownership rules avoid Rc and Arc, favor borrows, and prefer iterators over owned collections.
Google mirrors its C++ style guide philosophy: consistency, readability, and automation. The Rust guide seeks to make large‑scale changes (LSCs) smoother by enforcing uniform patterns that reduce bikeshedding on code reviews. Consistency with the broader Rust ecosystem is a priority, but the guide adds internal rules to support long‑term maintenance of code that may persist for years. By codifying decisions—such as preferring named fields over tuple structs and using #[must_use] on functions—the guide aims to cut minor style disputes and give reviewers a clear checklist.
Rust is already used in google3, Android, ChromeOS, Fuchsia, and Chrome. The guide states that Android, Chromium, and other codebases have consulted on the rules and intend to start applying them. Individual projects may retain stricter internal rules, but the document is positioned as the baseline for all Google Rust code. Adoption will roll out as each codebase aligns its CL practices with the new standards.
The guide mandates using const functions responsibly, applying #[non_exhaustive] to public enums and structs, and marking functions and types with #[must_use] where appropriate. It warns against running code before main(), overusing type inference, and omitting patterns on non_exhaustive enums. Panic handling must avoid panic::catch_unwind, and developers should prefer expect over unwrap. Concurrency rules forbid async/.await and standard library thread creation, directing developers to fuchsia_sync::Mutex for synchronization. These constraints aim to keep code predictable and audit‑ready.
The guide applies to Rust usage in google3, Android, ChromeOS, Fuchsia, and Chrome, and is being consulted on by Android, Chromium, and other codebases.
The guide aims for readability, maintainability, easier large‑scale changes, and alignment with the wider Rust ecosystem.
Android, Chromium, and other Google codebases intend to start applying the guide, while each project may retain its own stricter rules.
Google's Rust style guide is a decisive step toward unifying its sprawling codebases under a single, enforceable standard. By marrying public Rust conventions with internal safeguards, the guide positions the company to handle massive refactors without the usual style wars. The real test will be how quickly Android, Chromium, and other teams embed these rules into daily practice, but the blueprint is now on the table.
Sources: Hacker News – Rust Style Guide (https://google.github.io/styleguide/rustguide.html)