2.5 KiB
2.5 KiB
Règles Rust générales
Base
- RUST-BASE-001 — L'édition Rust est Rust 2024.
- RUST-BASE-002 — Chaque
lib.rsetmain.rsactivemissing_docs,unreachable_pubet interditunsafe_code. - RUST-BASE-003 — Les lints communs sont déclarés au workspace et hérités par les crates.
- RUST-BASE-004 — Le code
unsafeest interdit sauf future exception normative extrêmement ciblée et justifiée. - RUST-BASE-005 — Tout fichier Rust possède les en-têtes
// file: ...et// version: N.
Documentation et API
- RUST-DOC-001 — Tout élément
puboupub(crate)possède une rustdoc utile au point de déclaration. - RUST-DOC-002 — Toute réexportation visible depuis le crate-root possède une rustdoc adjacente.
- RUST-DOC-003 — La façade d'une crate doit permettre de consommer son API sans dépendre des chemins internes de modules.
Imports et façade
- RUST-IMPORT-001 — Les éléments partagés appartenant à la crate sont consommés via
crate::Itemaprès réexport au crate-root. - RUST-IMPORT-002 — Les autres crates consomment l'API via
owner_crate::Itemet non via des modules internes. - RUST-IMPORT-003 — Aucun
pub modn'est utilisé pour exposer indirectement une arborescence interne. - RUST-IMPORT-004 — Les glob imports sont interdits.
- RUST-IMPORT-005 — Les alias de réexport destinés à masquer des collisions de noms sont interdits ; les symboles reçoivent un nom canonique non ambigu.
Contrôle de flux et erreurs
- RUST-FLOW-001 — Les retours sont explicites ; le lint Clippy
implicit_returnest refusé. - RUST-FLOW-002 —
unwrap()etexpect()sont interdits dans le code de production. - RUST-FLOW-003 — L'opérateur
?est interdit ; les chemins d'erreur restent explicites. - RUST-FLOW-004 —
panic!n'est pas utilisé pour une erreur métier récupérable.
Formatage
- RUST-FMT-001 —
rustfmt.tomlracine est canonique. - RUST-FMT-002 —
cargo fmt --all -- --checkfait partie des gates. - RUST-FMT-003 — La largeur maximale canonique est 160 caractères.
Tests
- RUST-TEST-001 — Les tests unitaires restent proches de la crate ou du module testé.
- RUST-TEST-002 — Les tests d'intégration résident sous
tests/de la crate concernée. - RUST-TEST-003 — Les tests ne rendent pas artificiellement publique une API privée.