Notes concernant Rust

Avoir plusieurs crates dans un seul dépôt

Il peut être nécessaire d’avoir plusieurs crates dans un seul dépôt. On peut procéder de la façon suivante :

├── Cargo.toml     (1)
├── my_lib_crate/
│   ├── Cargo.toml (2)
│   └── src
│       └── lib.rs
├── my_bin_crate/
│   ├── Cargo.toml (3)
│   └── src
│       └── main.rs
├── Cargo.lock     (*)
└── target/        (*)

Les Cargo.toml (2) et (3) contiendront les informations habituelles de leur crate respectif.

Le Cargo.toml (1) quant à lui contiendra seulement :

[workspace]
members = ["my_lib_crate", "my_bin_crate"]

Ainsi, faire un cargo build à la racine du dépôt compilera les deux crates.

Notez la présence du dossier target/ et du fichier Cargo.lock à la racine (*). En effet ils restent, à côté du Cargo.toml principal, celui définissant [workspace].

La variation suivante est également supportée :

├── Cargo.toml
└── foo/
    ├── my_lib_crate/
    │   ├── Cargo.toml
    │   └── src
    │       └── lib.rs
    └── my_bin_crate/
        ├── Cargo.toml
        └── src
            └── main.rs

Cette fois-ci, le Cargo.toml principal contiendra :

[workspace]
members = ["foo/my_lib_crate", "foo/my_bin_crate"]

Dernière mise à jour : ven. 09 avril 2021