4.0 KiB
Templates d'outillage Rust/Cargo
Rôle et sélection
Ces trois fichiers fournissent une baseline de configuration issue des conventions réellement utilisées dans KSP et Games. Ils s'appliquent à un projet Rust/Cargo qui choisit ce profil d'outillage ; ils ne créent pas une dépendance vers PGR après copie.
rustfmt.toml— formatage canonique, avec notamment largeur160et édition2024dans l'exemple ;clippy.toml— paramètres de lints (seuils, exceptions de tests, identifiants courts) issus du noyau partagé des deux projets ;.cargo/config.toml— emplacements des artefacts Cargo hors de la racine source.
Les niveaux deny, allow, warn et forbid des lints Rust/Clippy appartiennent au Cargo.toml du workspace, selon 510-RUST_CARGO.md. clippy.toml règle des paramètres de lints, pas leur niveau. Les deux modèles Cargo et l'héritage [lints] workspace = true sont documentés dans 002-CARGO_MANIFESTS.md.
Copier et adapter
Copier ces fichiers aux chemins suivants dans le projet destinataire :
rustfmt.toml
clippy.toml
.cargo/config.toml
Adapter le header # file: de chacun à son nouveau chemin relatif. Comme il s'agit de nouveaux fichiers locaux, leur révision interne commence à 1 si le projet suit cette convention. Vérifier les choix avant de les utiliser :
rustfmt.toml: alignereditionsur l'édition déclarée dans le manifeste du projet. La largeur et les autres options constituent la convention de départ de KSP/Games et peuvent être ajustées pour le projet ;clippy.toml: revoir les seuils au regard des types et API du projet ; adapterallowed-idents-below-min-charsà ses abréviations réelles. Les exceptionsallow-*-in-testssont une décision explicite du profil retenu ; elles ne relâchent pas les lints de production ;.cargo/config.toml: remplacerproject-namepar un identifiant propre au projet pour éviter la collision de deux workspaces sous../builds/. Depuis une configuration placée dans<racine>/.cargo/, Cargo résout ici les chemins relatifs par rapport à<racine>/: la sortie se trouve donc sous le dossier frère<parent>/builds/<projet>/target/;- conserver les deux entrées
target-diretbuild-dirlorsque cette politique est choisie. Elles ciblent volontairement le même dossier, même si Cargo utilise actuellementtarget-dircomme valeur par défaut debuild-dir; - ajouter séparément les flags de cible, chemins particuliers ou ajustements Clippy nécessaires à un projet. Les flags Web présents dans Games ne sont pas un défaut de tous les projets Rust.
Le chemin de sortie sous builds/ est externe au dépôt source ; il ne doit pas être inclus dans les archives du projet. Si l'environnement impose un autre emplacement, ajuster la configuration du projet au lieu de copier un chemin machine depuis KSP ou Games.
Dans un projet existant, ces fichiers sont des références de comparaison. rustfmt.toml, clippy.toml ou .cargo/config.toml déjà présents MUST être comparés avant remplacement ; une différence locale peut rester KEEP-LOCAL, devenir un OVERRIDE explicite ou rester DEFER conformément à ../rules/230-ADOPTION.md. L’adoption n’exige pas une copie byte-for-byte des templates PGR.
Validation dans un projet Rust
Après adaptation, les contrôles utiles dépendent du code et des manifests effectivement présents :
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
Vérifier l'emplacement effectif des artefacts sur un build ou un check pertinent. La validation de PGR lui-même peut vérifier la syntaxe TOML et la cohérence des chemins sans demander de compiler un workspace Rust absent de son dépôt.