免責事項:コメントで言及しましたが、詳しく説明するスペースが増えるので、ここで繰り返します.
Shepmaster が言ったように、include_bytes!
およびinclude_str!
マクロを使用して、Rust ライブラリ/実行可能ファイルにテキストまたはバイナリを逐語的に含めることができます。
しかし、あなたの場合、私はそれを避けます。コンテンツの解析を実行時に延期することにより、次のようになります。
- 欠陥のあるアーティファクトの構築を許可します。
- (より多くの) ランタイム オーバーヘッド (解析時間) が発生します。
- (より多くの) スペースのオーバーヘッド (コードの解析) が発生します。
Rust はこの問題を認識しており、これらの制限を克服するためのコード生成のための複数のメカニズムを提供しています。
- マクロ: ロジックをマクロにエンコードできる場合は、ソース ファイルに直接含めることができます。
- プラグイン: 任意のロジックをエンコードして精巧なコードを生成できる強化されたマクロ (「 」を参照
regex!
)
build.rs
.rs
:ファイルを生成する役割を持つ、適切なコンパイルの前に実行される独立した「Rust スクリプト」
あなたの場合、build.rs
スクリプトはぴったりのように聞こえます:
- 解析コードをそこに移動することで、アーティファクトを軽量化できます
- 事前に解析することで、より高速なアーティファクトを提供できます
- 事前に解析することで、正しいアーティファクトを配信します
解析の結果は、有効な Rust コードを生成できるように、関数から静的 (おそらくlazy_static!
)まで、さまざまな方法でエンコードできます。build.rs
Cargo Documentationbuild.rs
で使用方法を確認できます。Cargo との統合方法とファイルの作成方法 (およびその他) が記載されています。