Files
sasedev-knowledge/docs/templates/004-RUST_LIBRARY_CRATE.md
2026-09-28 22:42:48 +02:00

38 lines
1.1 KiB
Markdown

<!-- file: docs/templates/004-RUST_LIBRARY_CRATE.md -->
<!-- version: 1 -->
# Pattern local — crate bibliothèque Rust
## But
Ce pattern illustre la structure minimale attendue d'une crate bibliothèque Knowledge. Il ne crée pas une crate par anticipation et ne remplace pas [`../rules/510-RUST_CARGO.md`](../rules/510-RUST_CARGO.md).
## Façade
`src/lib.rs` reste une façade :
```rust
//! Documentation de crate.
mod responsibility;
/// Contrat public exposé par la crate.
pub use self::responsibility::PublicItem;
```
Les définitions résident dans le module propriétaire :
```rust
// file: crates/<crate>/src/responsibility.rs
// version: 1
/// Contrat public possédé par cette responsabilité.
pub struct PublicItem;
```
Pour plusieurs responsabilités distinctes, créer plusieurs modules nommés selon leur rôle réel. Ne pas créer un fichier `api.rs`, `common.rs` ou `utils.rs` uniquement pour déplacer du code sans clarifier l'ownership.
## Tests
Les tests unitaires vivent sous `unit_tests/` et sont rattachés au module source correspondant. Les tests d'intégration vivent sous `tests/` et consomment l'API publique.