38 lines
1.1 KiB
Markdown
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.
|