كيفية الحصول على بيانات حزمة Cargo (الإصدار، الاسم، الوصف) في برنامج Rust؟
مرحبًا بالجميع! أنا أكتب أداة CLI بلغة Rust وأريد عند التشغيل مع العلم `--version` عرض إصدار البرنامج. لكنني لا أريد ترميز السلسلة "0.1.0" في الكود — هذا غير مريح، يجب تغيير الإصدار فقط في `Cargo.toml`.
المشكلة: لا أستطيع فهم كيفية قراءة البيانات من `Cargo.toml` من داخل برنامج Rust. جربت استخدام `std::fs::read_to_string("Cargo.toml")`، لكن هذا يعمل فقط إذا تم تشغيل البرنامج من جذر المشروع، وبعد التثبيت عبر `cargo install` لا يوجد ملف `Cargo.toml` بجانب الملف الثنائي.
هذا هو الكود الحالي الخاص بي، والذي بالطبع لا يعمل كما ينبغي:
```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);
}
```
إنه يطبع "un