WSL2でRustドキュメントを開く
Rust には標準でドキュメントを開くツールが付属しており,
rustup doc
により the Book や標準ライブラリを,
cargo doc --open
で開発中のクレートや依存クレートのドキュメントをブラウザで表示することができます.
ただしこれは WSL では (WSL1, WSL2 ともに) デフォルトではうまく動作しません.
開くべきドキュメントは WSL 側にあるものの, ブラウザは Windows 側にあるためです.
以前まで rustup doc
相当のことをするために nginx を使用して HTML ファイル等を配信するというアプローチをとっていましたが,
これは cargo doc
の場合には (ひと手間かけないと) 使えません.
しかし rustup や cargo の issue を眺めていたところ, WSL 側のファイルパスを Windows 側のパスに変換し,
それを Windows 側のブラウザに渡すという完全な解決策を発見しました (参考文献を参照).
ただし Windows 側から WSL 側のファイルを直接読みに行っているので,
ファイルアクセスは高速とは言い難いです. とはいえローカルで完結しているので,
ストレージの性能によりますが, オンラインドキュメントの場合と比較して遅いということはないと思います.
作業内容
Firefox で開く場合, WSL 側で
#! /bin/bash
WINPATH="file:///$(wslpath -m ${1})"
/mnt/c/Program\ Files/Mozilla\ Firefox/firefox.exe $WINPATH
というファイルを任意の場所に保存しパスを通します. 実行権限があることを確認してください (なければ chmod 744 <script>
など).
次に, 環境変数 BROWSER
にこのスクリプトのパスを設定します.
~/.bashrc
あたりに
export BROWSER=<上記スクリプトのフルパス>
と書き込んで bash を再読み込みします (source ~/.bashrc
またはシェルを再起動). 以上で Rust のドキュメントがブラウザで開けるはずです.