vscodeでシンタックスハイライトの設定を行う場合,settings.jsonのeditor.tokenColorCustomizationsで"keywords"や"varialbles"を一括で指定する方法と"textMateRules"でスコープを指定する方法があります.その二つでも十分なシンタックスハイライトが利用できるのですが,言語サーバーによる字句解析に基づいたセマンティックハイライトも利用できます.今回はrust-analyzerを用いたセマンティックハイライト特有の利用法をいくつか紹介します.詳しくはrust-analyzerのユーザーマニュアルやvscodeのガイドを参照してください.
まずセマンティックハイライトを利用するためにsettings.jsonの"editor.semanticHighlighting.enabled"をtrueにします.
ミュータビリティや消費の可視化
以下のように"editor.semanticTokenColorCustomizations"を指定していきます.variableトークンにmutableで修飾することでミュータブルな変数のスタイルを指定し,consumingで修飾することで消費されるときのスタイルを指定できます.

これによって以下のように消費される部分では斜体になり,ミュータブルな変数は下線がつきます.variable.mutableはデフォルトで下線が付くため本来はfontStyleを指定しなくても大丈夫です.

pubの可視化
public修飾子を使うことでpubと定義されたときのスタイルを指定できます.

これによって公開する関数とそうでない関数の色分けができます.

型と型パラメーターや型エイリアスとの色分け
デフォルトでは同じ色となる構造体と型パラメーター,型エイリアスの色分けを行えます.以下ではそれに加えて列挙体とトレイトも指定しています.トレイトはinterfaceトークンで指定します.


外部クレートとの色分け
外部クレートや標準ライブラリからインポートする場合の修飾子を指定できます.
これによって外部クレート,標準ライブラリ,内部モジュールで構造体の色分けができます.


