Excvrとrust-analyzerでJupyterでRust
TL;DR
とりあえずRustを動かしてみたい、といった用途ではJupyterは非常に有用な環境です。
excvrを使うことでJupyter上でRustを使うことができるようになります。
また、jupyter-lspを使いrust-analyzerをJupyter上で動かせるようにすることで、開発体験を向上させます。
polarsと抱合せですが、以下のレポジトリで動作が確認できます。
excvr用のimageの作成
evcxr_jupyter自体のインストールは公式が詳しいです。
libzmq3-devがないとエラーしたので、加えてあります。
今回はevcxr_jupyterのインストールに加えて、jupyter-lab、jupyter-lsp、rust-analyzerのインストールを行っています。
Dockerfile
jupyter-lsp用の設定
pythonやrなど、jupyterでメジャーな言語のものは自動でlspを検出してくれるようですが、rustの場合は自前で設定を書く必要があります。
jupyter-lsp configuringのScalaの例を参考に設定ファイルを作成します。
以下のファイルをjupyter --pathsで表示されるディレクトリのどれか以下にjupyter_server_config.dを作成し、それ以下に配置します。
今回は${HOME}/.jupyter/jupyter_server_config.d/rust-analyzer.jsonというように配置します。
rust-analyzer.json
docker-composeの設定
すでに書いたように、rust-analyzer.jsonを${HOME}/.jupyter/jupyter_server_config.d/rust-analyzer.jsonに配置します。
また、work以下をマウントして、ローカルと共有しています。
docker-compose.yaml
Cargo.tomlの作成
rust-analyzer自体はCargoがないプロジェクトでも動かせるらしいですが(参考)、今回は面倒なので、Cargo.tomlを使ってdocker-compse.ymlで共有するためのworkディレクトリを作成します。
実行
これで、docker-compose upでjupyterが起動するはずです。
以下のように補完が効くようになります。

VSCodeほどではないですが、tab補完よりは快適な気がします。