ライブラリを作成しようとしていて、実行時に解析されるデータを持つバイナリ(またはテキスト)ファイルをライブラリに含める必要があります。Rustライブラリにバイナリファイルまたはテキストファイルを含める方法はありますか?
私の意図は、これらのファイルを制御し、常に更新し、各アップデートでライブラリのバージョンを変更することです。
これは貨物経由で可能ですか?もしそうなら、どのように私のライブラリからこれらのファイルにアクセスできますか?
私は考えていたのは、.rs
のファイルに構造体や定数を入れてデータを格納する&str
のようなものを含めることだと思っていましたが、醜いと感じました。
編集:私は私の場合より多くに合うものに受け入れ答えを変更しました
これはあなたのケースでは、より適していることができて、しかしShepmaster's answerを見てみましょう。
**実行時に解析されます** =>なぜですか?データは静的なので、すでに解析されたデータを実行時に解析するのではなくバイナリに格納する方が効率的です。 Rustはコンパイル時にかなり制限されています(残念なことに)。しかし、あなたの場合は可能なように '.rs'ファイルを保持することに言及しています。これが当てはまる場合、Rustの "build script"である 'build.rs'ファイルを使用して、ソースファイルを解析し、ビルド直前に' .rs'ファイルを生成することをお勧めします。適切な "。 –
より正確にするために、これらのデータはすでに解析されており、 'HashMap'のような初期化できない構造体(少なくともlazy_staticクレートを使用していなくても)に移動する必要があります。これが私が実行時にそれらを "解析"する必要がある理由です。それらをバイナリ(またはテキスト)ファイルにすると、データを更新するときにこのファイルだけを置き換えるのが簡単になります。しかし、 'build.rs'を' lazy_static'と組み合わせて使用すると、より良い選択肢のように聞こえ、試してみます。提案していただきありがとうございます! – Otobo