パッケージ内の錆コードから貨物パッケージのメタデータ(バージョンなど)にアクセスするにはどうすればよいですか?私の場合は、標準の--version
フラグを持っているコマンドラインツールをビルドしています。パッケージのバージョンをCargo.toml
から読み取るように実装したいので、2つには維持する必要はありません場所。誰かがプログラムから貨物のメタデータにアクセスしたいと思う他の理由があると私は想像することができます。錆プログラムが貨物パッケージからメタデータにアクセスするにはどうすればよいですか?
69
A
答えて
102
Cargoは環境変数を介してコンパイラにいくつかのメタデータを渡します。その一覧はCargo documentation pagesにあります。
貨物コードには、this methodというコンパイラ環境が設定されています。このコードは以前のバージョンよりも複雑になり、変数のリスト全体は動的である可能性があるため、もはやそれから明らかになりません。しかし、少なくとも以下の変数は、(ドキュメントのリストから)が設定されています
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
あなたはenv!()
マクロを使用して環境変数にアクセスすることができます。あなたのプログラムでも貨物なしでコンパイルしたい場合は、あなたがoption_env!()
を使用することができます
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION);
:あなたがこれを行うことができ、あなたのプログラムのバージョン番号を挿入するには
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION.unwrap_or("unknown"));
5
built -crateは、シリアル化に役立ちますすべての定型文なしで多くの貨物環境。
関連する問題
- 1. rspecでメタデータにアクセスするにはどうすればいいですか(:all)?
- 2. MSBuildスクリプトからITaskItemメタデータにアクセスするにはどうすればよいですか?
- 3. RailsのAWS S3オブジェクトからプログラムでメタデータを読み取るにはどうすればよいですか?
- 4. プログラムでIPTVサーバーにアクセスするにはどうすればよいですか?
- 5. Webフォームにプログラムでアクセスするにはどうすればよいですか?
- 6. プログラムでアクティビティアニメーションにアクセスするにはどうすればよいですか?
- 7. 機能フラグを貨物の従属関係にパスするにはどうすればよいですか?
- 8. CordovaプラグインからNuGetパッケージをプログラムでインストールするにはどうすればよいですか?
- 9. 詳細ビューからコントロールにプログラムでアクセスするにはどうすればよいですか?
- 10. カスタムメイドクラスからメソッドにアクセスするにはどうすればよいですか?
- 11. CasperJSからiframeにアクセスするにはどうすればよいですか?
- 12. ゲストマシンからホストマシンにアクセスするにはどうすればよいですか?
- 13. APIからプライベートスプレッドシートにアクセスするにはどうすればよいですか?
- 14. 錆プログラムを別のglibcにリンクするにはどうすればいいですか?
- 15. メタデータをクロージャーベクトルに追加するにはどうすればよいですか?
- 16. クロムキャストレシーバーアプリでid3メタデータをデコードするにはどうすればよいですか?
- 17. 通貨フィールドを検証するにはどうすればよいですか?
- 18. iframeから親フレームにアクセスできないようにするにはどうすればよいですか?
- 19. ビジュアルスタジオファイルのメタデータを表示するにはどうすればよいですか?
- 20. iOSからローカル音楽ファイルにプログラムでアクセスするにはどうすればいいですか?
- 21. 物理アドレスでGPIOにアクセスするにはどうすればよいですか?
- 22. pythonパッケージがリモートLinuxマシンにインストールされているかどうかをプログラムで確認するにはどうすればよいですか?
- 23. このxmlファイルの物理パスをプログラムで設定するにはどうすればよいですか?
- 24. CreateFileを使用して物理ディスクにアクセスするにはどうすればよいですか?
- 25. カーネルモジュール内の既知の物理アドレスのメモリにアクセスするにはどうすればよいですか?
- 26. ウェブプロジェクトからフォルダにアクセスするにはどうすればいいですか
- 27. rubyからmemcachedにアクセスするにはどうすればいいですか
- 28. プライベートネットワークからインターネットにアクセスするにはどうすればいいですか
- 29. ApiControllerからHttpContext.Itemsにアクセスするにはどうすればいいですか?
- 30. Oracleデータベースをリモートからアクセスできるようにするにはどうすればよいですか?