Làm cách nào để bạn truy cập siêu dữ liệu của gói Hàng hóa (ví dụ: phiên bản) từ mã Rust trong gói? Trong trường hợp của tôi, tôi đang xây dựng một công cụ dòng lệnh mà tôi muốn có một tiêu chuẩn --version
cờ, và tôi muốn thực hiện để đọc phiên bản của gói từ Cargo.toml
vì vậy tôi không phải duy trì nó trong hai nơi. Tôi có thể tưởng tượng có những lý do khác mà ai đó cũng muốn truy cập siêu dữ liệu Cargo từ chương trình.Làm cách nào để chương trình Rust truy cập siêu dữ liệu từ gói Hàng hóa của mình?
Trả lời
Hàng hóa chuyển một số siêu dữ liệu đến trình biên dịch thông qua các biến môi trường, một danh sách có thể được tìm thấy trong Cargo documentation pages.
Môi trường trình biên dịch được điền bởi this method trong mã của Cargo. Mã này đã trở nên phức tạp hơn kể từ các phiên bản trước và toàn bộ danh sách các biến không còn rõ ràng nữa bởi vì nó có thể là động. Tuy nhiên, ít nhất là các biến sau đây được đặt ở đó (từ danh sách trong tài liệu):
CARGO
CARGO_MANIFEST_DIR
CARGO_PKG_VERSION_MAJOR
CARGO_PKG_VERSION_MINOR
CARGO_PKG_VERSION_PATCH
CARGO_PKG_VERSION_PRE
CARGO_PKG_VERSION
CARGO_PKG_NAME
CARGO_PKG_DESCRIPTION
CARGO_PKG_HOMEPAGE
CARGO_PKG_AUTHORS
OUT_DIR
Bạn có thể truy cập các biến môi trường bằng cách sử dụng env!()
vĩ mô. Để chèn số phiên bản của chương trình, bạn có thể làm điều này:
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION);
Nếu bạn muốn chương trình của bạn để biên dịch thậm chí không có hàng hóa, bạn có thể sử dụng option_env!()
:
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION.unwrap_or("unknown"));
Các built -crate giúp với serializing rất nhiều môi trường của Cargo mà không có tất cả các boilerplate.
- 1. Truy cập vào Siêu dữ liệu PNG
- 2. Truy cập siêu dữ liệu riêng của trứng trăn
- 3. Có cách nào để truy cập tự động siêu siêu dữ liệu không?
- 4. Làm thế nào để truy cập dữ liệu clipboard theo chương trình?
- 5. Làm cách nào để truy cập tệp/dữ liệu/dữ liệu từ trình giả lập Android từ Genymotion?
- 6. Làm thế nào để đọc siêu dữ liệu từ mp3?
- 7. Truy cập siêu dữ liệu Greasemonkey từ bên trong tập lệnh của bạn?
- 8. Logging chương trình Rust
- 9. Làm cách nào để truy cập đối tượng dữ liệu của một DataGridCell trong mã?
- 10. Ember.js: Cách truy cập siêu dữ liệu JSON API từ store.findRecord gọi
- 11. Truy cập siêu dữ liệu mẫu trang từ dao cạo TBB
- 12. Firefox api - truy cập từ chương trình của tôi
- 13. Truy cập Python dữ liệu trong gói Subdirectory
- 14. Làm cách nào để truy cập tài liệu API từ dòng lệnh trên Linux?
- 15. Làm cách nào để truy xuất dữ liệu từ Cơ sở dữ liệu Firebase?
- 16. Làm cách nào để cập nhật một loạt siêu dữ liệu của các đối tượng S3 bằng ruby?
- 17. Tôi làm cách nào để tìm gói của mình?
- 18. Truy cập dữ liệu gốc của DataContext từ DataTemplate
- 19. Woocommerce: làm cách nào để thêm siêu dữ liệu vào một mục hàng?
- 20. Cách nhận siêu dữ liệu chương nhúng với MediaMetadataRetriever
- 21. Cách tải siêu dữ liệu từ ảnh?
- 22. Nhiều tệp nguồn Rust cho hàng hóa
- 23. Làm thế nào tôi có thể truy cập siêu dữ liệu trong rspec trước (: tất cả)?
- 24. Làm cách nào tôi có thể truy cập ViewModel của mình từ mã phía sau
- 25. Làm thế nào để truy cập vào bộ nhớ từ một chương trình trong một
- 26. Làm cách nào để đặt siêu dữ liệu tiêu đề thành video được mã hóa?
- 27. Truy cập chia sẻ NFS từ chương trình Java
- 28. Làm cách nào để truy xuất Chú thích dữ liệu từ mã? (theo lập trình)
- 29. Làm cách nào để truy cập dữ liệu thông báo đẩy từ xa trên applicationDidBecomeActive?
- 30. Làm cách nào để đọc siêu dữ liệu của một loại khi chạy?