Avatar ·

Como obter metadados do pacote Cargo (versão, nome, descrição) em um programa Rust?

Olá a todos! Estou escrevendo um utilitário CLI em Rust e quero que, ao executar com a flag `--version`, a versão do programa seja exibida. Mas não quero hardcodar a string "0.1.0" no código — isso é inconveniente, a versão deve ser alterada apenas no `Cargo.toml`. Problema: não consigo entender como ler os dados do `Cargo.toml` a partir do próprio programa Rust. Tentei usar `std::fs::read_to_string("Cargo.toml")`, mas isso só funciona se o programa for executado a partir da raiz do projeto; após a instalação via `cargo install`, o arquivo `Cargo.toml` não fica ao lado do binário. Aqui está meu código atual, que obviamente não funciona como deveria: ```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); } ``` Ele exibe "un