Avatar ·

Comment obtenir les métadonnées d'un package Cargo (version, nom, description) dans un programme Rust ?

Bonjour à tous ! Je commence à apprendre Rust et j'écris un petit utilitaire en ligne de commande. Je souhaite que lors de l'exécution avec le flag `--version`, le programme affiche non seulement le numéro de version, mais par exemple : "MyApp v0.2.1 (2024-05-20)". Le problème est que je ne veux pas coder en dur la version dans le code — ce n'est pas correct, car elle est déjà spécifiée dans le fichier `Cargo.toml`. Comment extraire correctement cette information lors de la compilation ou de l'exécution ? J'ai essayé de lire le fichier `Cargo.toml` directement, mais cela semble bancal, et dans une build de release, le fichier pourrait ne pas être présent. J'ai entendu parler de la macro `env!()`, mais je ne comprends pas comment la lier à Cargo. Voici un exemple de ma structure actuelle : ```rust fn main() { // Comment obtenir la version depuis Cargo.toml ? println!("MyApp v{}", get_version()); } ``` J'ai besoin d'obtenir : le nom du package, la version, la description, les auteurs et éventuellement le hash du commit git. Pouvez-vous m'indiquer comment faire cela correctement et de manière idiomatique pour Rust ? Quels sont les crates prêts à l'emploi ou les outils intégrés ? Merci d'avance !