Wie erhalte ich Cargo-Paket-Metadaten (Version, Name, Beschreibung) in einem Rust-Programm?
Hallo zusammen! Ich schreibe ein CLI-Tool in Rust und möchte, dass beim Start mit dem Flag `--version` die Programmversion ausgegeben wird. Aber ich möchte den String "0.1.0" nicht hardcoden – das ist unpraktisch, die Version soll nur in `Cargo.toml` geändert werden.
Problem: Ich verstehe nicht, wie ich aus dem Rust-Programm selbst die Daten aus `Cargo.toml` lesen kann. Ich habe `std::fs::read_to_string("Cargo.toml")` ausprobiert, aber das funktioniert nur, wenn das Programm aus dem Projektstammverzeichnis gestartet wird. Nach der Installation via `cargo install` liegt die Datei `Cargo.toml` nicht neben dem Binary.
Hier ist mein aktueller Code, der natürlich nicht wie gewünscht funktioniert:
```rust
fn main() {
let version = std::fs::read_to_string("Cargo.toml")
.ok()
.and_then(|s| {
s.lines()
.find(|l| l.starts_with("version"))
```