Comment obtenir les métadonnées d'un package Cargo (version, nom, description) dans un programme Rust ?
Bonjour à tous ! J'écris un utilitaire CLI en Rust et je veux qu'au lancement avec le flag `--version`, la version du programme s'affiche. Mais je ne veux pas hardcoder la chaîne "0.1.0" dans le code — ce n'est pas pratique, la version doit être modifiée uniquement dans `Cargo.toml`.
Problème : je n'arrive pas à comprendre comment lire les données de `Cargo.toml` depuis le programme Rust lui-même. J'ai essayé d'utiliser `std::fs::read_to_string("Cargo.toml")`, mais cela fonctionne uniquement si le programme est exécuté depuis la racine du projet, et après installation via `cargo install`, le fichier `Cargo.toml` ne se trouve pas à côté du binaire.
Voici mon code actuel, qui bien sûr ne fonctionne pas comme souhaité :
```rust
fn main() {
let version = std::fs::read_to_string("Cargo.toml")
.ok()
.and_then(|s| {
s.lines()
.find(|l| l.starts_with("version"))
.map(|l| l.trim().trim_start_matches("version = \"").trim_end_matches('"'))
})
.unwrap_or("unknown");
println!("MyApp v{}", version);
}
```
Il affiche "un