Skip to main content

Rust

Rust conventions are enforced by the compiler and rustfmt. Deviating from them produces warnings.

Casing Rules

ElementConventionExample
Types (structs, enums)PascalCaseOrderService, PaymentMethod
TraitsPascalCasePaymentProcessor, Serialize
Enum variantsPascalCasePaymentMethod::CreditCard
Functions / methodssnake_caseget_user_by_id, process_payment
Variablessnake_caseuser_count, is_active
Constants / staticsSCREAMING_SNAKE_CASEMAX_RETRY_COUNT, DEFAULT_TIMEOUT
Modulessnake_caseorder_service, user_repository
Crate names (code)snake_caseorder_service
Crate names (Cargo.toml)kebab-caseorder-service

File and Module Naming

Files map directly to module names. Keep them snake_case.

# Good:
order_service.rs
user_repository.rs
payment_processor.rs

# Module tree:
src/
├── main.rs (or lib.rs)
├── orders/
│ ├── mod.rs
│ ├── service.rs
│ └── repository.rs
└── payments/
├── mod.rs
└── processor.rs

Crate Naming

The crate name in Cargo.toml uses kebab-case; the same name is referenced in code as snake_case:

# Cargo.toml
[package]
name = "order-service"
// referenced as:
extern crate order_service;