👌
Cargoの「Updating crates.io index」が遅い問題の対処法
Rustをいじっていて「cargo add」「cargo check」をした時にcrates.ioの最新のインデックスの取得がとてつもなく遅い時があるため、それに対応する方法を以下に記します。
対処法
現在のcrate.ioを更新するgitプロトコルではレジストリで利用可能なすべてのクレートをインデックス化するリポジトリを複製
するようなのですが、それでは膨大に時間がかかる場合があるので、使用するクレートの情報のみをダウンロードするsparse protocol
に設定を変更するとパフォーマンスが劇的に改善します。
以下の2通りの方法があるので、お好みの方法で設定を変更してください。
環境変数に設定を追加する場合
CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
を環境変数に追加します。
.cargo/config.toml
に設定を追加する場合
$ vi ~/.cargo/config.toml
//以下の設定を追加
[registries.crates-io]
protocol = "sparse"
余談
このsparse protocol
はcargoの1.70.0
からはデフォルトになるそうなのでもうcrates.ioの更新が遅くて悩むことがなくなりそうですね。
参考資料
Discussion