クレートとは、ライブラリの事。
Rustでは、
ここから検索して、使用するクレートを選ぶ。
選んだクレートは、cargoコマンドでプロジェクトを作ると、プロジェクトフォルダ内に「Cargo.toml」ファイルが出来る。
その「Cargo.toml」ファイル内で、「[dependencies]」配下に、使用するクレート名とバージョンを記載。
プロジェクトをコンパイルすると、上記サイトから該当クレートの該当バージョンのソースをダウンロード。
自分のコードに、クレートを使用する記述。
という流れで、簡単に使える便利機能なのだが、当然オフラインでは使えない。
オンライン端末作業
クレートのダウンロードが必要なため、相変わらずオンライン端末は必要。
そのオンライン端末には、
前回書いた、「Microsoft C++ Build Tools 2022」と「Rust」をインストールしておく。
上記サイトで、使用するクレートを決める。
クレートのページを少しスクロールすると、右側に「Repository」のリンクがあるのでリンクをクリック。
GitHubなど各種リポジトリのページが表示されるので、そこからソースをダウンロード。
ダウンロードファイルを解凍。
プロキシ環境の場合、下記を実行。
set HTTP_PROXY=http://ID:PASS@proxy.example.co.jp:PORT
set HTTPS_PROXY=http://ID:PASS@proxy.example.co.jp:PORT
※ID:プロキシのユーザID
※PASS:プロキシのユーザのパスワード
※proxy.example.co.jp:プロキシのFQDN。
※PORT:プロキシのポート番号
下記コマンドで、コンパイル。
cd /d 「解凍したフォルダ」
cargo build -r
※可能なら、「--all-features」オプションを付ける。
実行すると依存クレートをダウンロードして、コンパイルする。
※コンパイルエラーが表示された場合は、対処する。
ダウンロードしたクレートを「解凍したフォルダ」を圧縮する。
「%USERPROFILE%\.cargo」を圧縮する。
ダウンロードファイル移動
圧縮した2ファイルをオフライン端末へ移動。
オフライン端末作業
任意の場所に、クレートを解凍する。
「%USERPROFILE%\.cargo」を同じ場所へ解凍する。
クレートを使用する準備が出来たので、cargoコマンドでプロジェクトを作成。
「Cargo.toml」の「[dependencies]」に下記のように記載。
crate_name = { path = "......./crate_name_x.y.z/", version = "x.y.z" }
保存と同時に、ダウンロード出来ないエラーが出るが、無視して、下記を実行。
cargo build --offline
これでダウンロードしたクレートを参照するようになり、ダウンロードエラーが出なくなる。
基本的に、cargoコマンドには、--offlineオプションを付ける。
cargo build --offline
cargo test --offline
一度、実行すれば、以降は付けなくても問題ないが、たまにネットを見に行こうとするので、明示的に付ける方が楽。
問題点
最後に、ファイル移動時の問題として、「%USERPROFILE%\.cargo」のサイズ肥大化がある。
色々なクレートをダウンロードしていると、飛躍的に肥大化していくので注意が必要。
ファイル移動するデバイスが溢れないように、分割する必要があるかもしれない。