Changelog

This page tracks notable changes to the Pragmatic Rust Guidelines.

2026.6

This update substantially expanded the guidelines, adding 41 new entries spanning macros, performance, project layout, FFI, AI-assisted development, and more:

GuidelineTitle
M-ASYNC-FNFunctions are async over returning a Future
M-ASYNC-STACK-SIZEHot async functions reduce stack size
M-AVOID-INDIRECTIONNested type hierarchies should avoid needless indirection
M-BALANCED-MODULESModules are balanced in size and scope
M-BOX-DSTUse boxed slices and strings for immutable owned sequences
M-BUILD-RESULTBuilders validate in final .build()
M-CARGO-WORKSPACECommon settings come from the workspace Cargo.toml
M-COLLECTION-TRAITSCollections implement the appropriate iter traits
M-CRATES-FLAT-FOLDERAll crates are siblings in one folder
M-CRATES-IN-WORKSPACEThe workspace lists and versions all crates
M-EXAMPLE-OVER-PROCPrefer 'macros by example' over proc macros
M-FAST-HASHERUse a fast hasher where possible
M-FFI-NAMINGFFI crates follow established naming conventions
M-FFI-TRANSLATESBusiness logic belongs in core crates, FFI only translates
M-FOREIGN-REEXPORTSItems come from their original crate
M-FROM-ERRORCanonical error conversion uses From, not map_err
M-INITIAL-CAPACITYCollections are created with sufficient initial capacity
M-INTEGRATION-TESTSIntegration tests live under tests/
M-LATEST-EDITIONNew crates target latest edition
M-LOG-NOT-PRINTProduction code uses telemetry, not println
M-LOG-OVERHEADLibrary telemetry does not tank performance
M-MACRO-HELPERSThird party items come from hidden _private module
M-MACRO-LAST-RESORTMacros are a last resort
M-MACRO-MAIN-CRATEMacros assume main crate
M-MACROS-DONT-LIEMacros don't lie about signatures
M-MEM-REUSEReuse allocations where possible
M-MSRVMSRV is conservatively updated
M-NO-META-DESIGN-DOCUMENTATIONAvoid meta design documentation
M-NO-PRELUDEDon't define preludes
M-PANIC-CONTINUATIONPanic continuation is last resort
M-PANIC-MESSAGECustom panics have a helpful message
M-PARAMETER-CONSISTENCYParameter ordering is consistent
M-PROC-IMPLProc macros should have separate impl crate incl. tests
M-PROC-IMPLIED-ITEMSProc macros don't produce implied or hidden items
M-RUST-SHAPEDRust code solves Rust problems
M-SHORT-NAMESNames of items are short
M-SHRINK-TO-FITShrink collections to fit after building
M-SINGLE-ITEM-PATHItems are only visible through one path
M-STRONG-TYPES-GUARDNewtypes guard their invariants
M-TARGET-CPUApplications target highest viable target-cpu
M-TAUTOLOGICAL-TESTSTests do not assert ground truth

We also removed the guideline-specific versioning.

2025

Initial release of the Pragmatic Rust Guidelines.