アップデート情報(2019年12月6日)
本記事で紹介した「VS Code Rust (rls)」拡張機能の不具合ですが、2019年9月4日にバージョン0.6.2がリリースされて解決しました。 念のため確認したところ、それ以降の全てのバージョン(以下)は問題ありませんでした。
- 0.6.2、0.6.3、0.7.0
もしまだ問題のあるバージョン(0.6.0と0.6.1)を使っているなら、拡張機能を最新版にアップデートしてください。
まずは近況など
共著で出版した書籍『実践Rust入門』(以下 本書)ですが、2019年4月26日に電子版が発売されました。 また物理本(紙の本)の発売日は10連休明けの5月8日ですが、東京都内の一部の大手書店では先行販売しているようです。
電子版の販売サイトへは 本書の書籍情報ページ(gihyo.jp)からリンクされています。 Gihyo Digital Publising(EPUB/PDFフォーマット)、Amazon Kindle、楽天koboから販売されています。
物理本の先行販売については、共著者である κeenさんのツィート を参照してください。
Twitterなどでは、早くも本書を入手し、連休を活用してRustに入門・再入門されている方が観測できます。 内容については概ね好評のようで、私もホッと胸をなでおろすと同時に、Rustの普及に少しでも役立っているのかなと、共著者の一人として喜びを感じています。
本題:Rust (rls) プラグイン最新版の不具合について
前置きが長くなりました。 本題に入りましょう。
本書の2章では開発環境のセットアップと称して、Visual Studio Code(VS Code)のインストール手順や、ごく基本的な使いかたを紹介しています。
本節では執筆時点の最新版を使ってインストール方法を説明します。
- VS Code 1.32.0
- Rust (rls)拡張機能 0.5.3
…
2-3-5 基本的な使い方
…
また
Ctrl
+Shift
+p
でコマンドパレットを開き、run
と入力してからTasks: Run Tasks
を選びます。cargo run
やcargo test
などが表示されますのでcargo run
を選んでみてください。
—実践Rust入門 [言語仕様から開発手法まで] より
この章は私が執筆したのですが、試してくださった方からこんなツィートが、
puffin 2019-04-28 9:18PM JST
実践Rust入門でVSCodeに拡張入れてcargo runしろって書いてあるのにコマンドが表示されないのでGitHubのissuesを調べてみたら一時的に削除したみたいなことが書かれてあってオイ
—https://twitter.com/puffin555/status/1122475268533149697 より
えっ、そんなことが?
Rust (rls)拡張機能のGitHub issueを調べてみたところ、たしかにそういうissueがありました。
- rust-lang/rls-vscode: #557 VS tasks not present on install version 0.6.0
経緯をまとめると、以下のようになります。
経緯
- Rust (rls) 拡張機能 0.6.0で行ったリファクタリングの結果、タスク機能が動作しなくなってしまった
- リリース後 issue #557 で報告があり、タスク機能が動作するように修正
- しかし
cargo run
タスクだけは意図的に復活させなかった - この状態で0.6.1をリリース
cargo run
タスクを復活させなかった理由は、同じことが「デバッグ」メニューの「デバッグの開始」や「デバッグなしで開始」でできるため- ただしこれらのメニューを使うには、ユーザーが
tasks.json
ファイルを作成する必要がある
- Issue #557のコメントで複数のユーザーが
cargo run
タスクの復活を希望 - 4月5日の このコミット で
cargo run
タスクを復活
- 次回のポイントリリース(0.6.2)からは元通り使えるようになる予定
次のバージョン(0.6.2)ではcargo run
タスクが復活するはずですが、リリースの時期はまだわかりません。
修正版がリリースされるまでのワークアラウンド
Rust (rls)拡張機能0.6.2がリリースされるまでの間は、古いバージョン(0.5.4)を使うのが良いでしょう。 以下の手順でダウングレードできます。
古いバージョン(0.5.4)へのダウングレード
以下の手順はVS Codeの最新版 1.33.1で動作確認済みです。
- 拡張機能の自動更新をオフにする
Ctrl/Command
+Shift
+p
でコマンドパレットを開き、disable auto
と入力する- 表示された「Disable Auto Updating Extentions」を選択する
- この操作で、インストールされている全ての拡張機能の自動更新が停止します
- 現時点(VS Code 1.33.1)では個別の拡張機能について自動更新をオフにすることはできないようです
- この設定でも更新のチェックは働きますので、拡張機能ビューで個別に手動更新をかけることはできます
- Rust (rls)拡張機能を0.5.4にダウングレードする
- 拡張機能ビューに切り替え(
Ctrl/Command
+Shift
+X
)、Rust (rls)を右クリックする - 「別のバージョンをインストール」を選び、
0.5.4
を選択する
- 拡張機能ビューに切り替え(
参考:
修正版がリリースされたら
0.6.2がリリースされたら、拡張機能の自動更新をオンに戻すといいでしょう。
Ctrl/Command
+Shift
+p
でコマンドパレットを開き、enable auto
と入力する- 表示された「Enable Auto Updating Extentions」を選択する
これでRust (rls)拡張機能が最新版に更新されます。
VS Code内でターミナルを使う方法もある
本書に書き忘れてしまったのですが、「ターミナル」メニューから「新しいターミナル」を選ぶと、VS Code内でターミナルを開けます。
VS Codeで開いているフォルダがカレントディレクトリとして設定されますので、その場で、carge run
などを実行できます。
覚えておくと便利です。