Pour faire simple, l'équivalent du .m2/repository
ou du répertoire cache des node_modules de npm n'existe pas en Rust / Cargo 😭
En résumé
- Soit il faut publier ses libs privées sur crates.io et donc les rendre publiques 🤬.
- Soit il faut installer l'équivalent d'un Artifactory perso quelque part 🤮.
- Soit il faut bidouiller / ruser 😩.
Parmi les bidouilles il y en a deux dont une acceptable je pense. Il faut déclarer le chemin vers le repo Git de la dépendance et non le nom et la version de la dépendance dans le fichier Cargo.toml
du projet.
Ce qui nous donne
[dependencies]
regex = { git = "https://github.com/rust-lang/regex.git", branch = "1.0.0" }
À la place de
[dependencies]
regex = "1.0.0"
Le paramètre branch
peut être une branche ou un tag. S'il n'est pas présent alors c'est le dernier commit sur la branche master qui sera utilisé.
Quid des fanatiques qui utilisent l'appellation main
à la place de master
? #DoNotCare
L'autre option consiste à déclarer le chemin relatif ou se trouve la dépendance (ici regexp) sur notre disque dur dans le fichier Cargo.toml
à la place du répo Git.
Ce qui rend le build non portable d'un développeur à l'autre puisque dépendant de la hiérarchie des dossiers, donc je vais éviter d'en parler.