26 lines
1.1 KiB
Markdown
26 lines
1.1 KiB
Markdown
|
|
---
|
||
|
|
name: rust-go-conventions
|
||
|
|
description: Conventions de style et patterns idiomatiques Rust (edition 2024) et Go 1.24 pour ce projet
|
||
|
|
---
|
||
|
|
|
||
|
|
# Conventions Rust / Go
|
||
|
|
|
||
|
|
## Rust (edition 2024)
|
||
|
|
- Utilise `thiserror` pour les types d'erreur publics, `anyhow` dans les binaires.
|
||
|
|
- Préfère `?` à `unwrap()` sauf dans les tests.
|
||
|
|
- Les `pub` structs doivent avoir des doc comments (`///`).
|
||
|
|
- Nomme les types de retour complexes avec des type aliases.
|
||
|
|
- `clippy::pedantic` activé — corrige tous les lints avant commit.
|
||
|
|
|
||
|
|
## Go 1.24
|
||
|
|
- Gestion d'erreurs : toujours `if err != nil { return ..., err }`, jamais `_`.
|
||
|
|
- Interfaces en minuscule si non exportées.
|
||
|
|
- Docstring obligatoire pour toute fonction exportée (commence par le nom de la fonction).
|
||
|
|
- Utilise `errors.Is` / `errors.As` pour comparer les erreurs.
|
||
|
|
- `golangci-lint` avec preset `default` + `gocritic`.
|
||
|
|
|
||
|
|
## Tests
|
||
|
|
- Rust : tests unitaires dans le même fichier (`#[cfg(test)]`), intégration dans `tests/`.
|
||
|
|
- Go : fichiers `_test.go`, table-driven tests avec `t.Run`.
|
||
|
|
- Couverture cible : 80 % sur les chemins critiques.
|