Reference Documentation for Rust Analyzer Options

2020-11-16

Rust Analyzer Options

TOC

Rust Analyzer

Rust Analyzer {#configuration_Rust Analyzer}

rust-analyzer.lruCapacity

type: ['null', 'integer']
minimum: 0
Number of syntax trees rust-analyzer keeps in memory.

key value
exclusiveMinimum True

rust-analyzer.files.watcher

type: string
default: client
Controls file watching implementation.

key value
enum [‘client’, ‘notify’]

rust-analyzer.files.exclude

type: array
default: []
Paths to exclude from analysis.

key value
items {‘type’: ‘string’}

rust-analyzer.notifications.cargoTomlNotFound

type: boolean
default: True
Whether to show can't find Cargo.toml error message

rust-analyzer.cargo.autoreload

type: boolean
default: True
Automatically refresh project info via cargo metadata on Cargo.toml changes

rust-analyzer.cargo.noDefaultFeatures

type: boolean
default: False
Do not activate the default feature

rust-analyzer.cargo.allFeatures

type: boolean
default: False
Activate all available features

rust-analyzer.cargo.features

type: array
default: []
List of features to activate

key value
items {‘type’: ‘string’}

rust-analyzer.cargo.loadOutDirsFromCheck

type: boolean
default: False
Run cargo check on startup to get the correct value for package OUT_DIRs

rust-analyzer.cargo.target

type: ['null', 'string']
Specify the compilation target

rust-analyzer.noSysroot

type: boolean
default: False
Internal config for debugging, disables loading of sysroot crates

rust-analyzer.rustfmt.extraArgs

type: array
default: []
Additional arguments to rustfmt

key value
items {‘type’: ‘string’}

rust-analyzer.rustfmt.overrideCommand

type: ['null', 'array']
Advanced option, fully override the command rust-analyzer uses for formatting.

key value
items {‘type’: ‘string’, ‘minItems’: 1}

rust-analyzer.checkOnSave.enable

type: boolean
default: True
Run specified cargo check command for diagnostics on save

rust-analyzer.checkOnSave.extraArgs

type: array
default: []
Extra arguments for cargo check

key value
items {‘type’: ‘string’}

rust-analyzer.checkOnSave.command

type: string
default: check
Cargo command to use for cargo check

rust-analyzer.checkOnSave.overrideCommand

type: ['null', 'array']
Advanced option, fully override the command rust-analyzer uses for checking. The command should include --message-format=json or similar option.

key value
items {‘type’: ‘string’, ‘minItems’: 1}

rust-analyzer.checkOnSave.allTargets

type: boolean
default: True
Check all targets and tests (will be passed as --all-targets)

rust-analyzer.checkOnSave.noDefaultFeatures

type: ['null', 'boolean']
Do not activate the default feature

rust-analyzer.checkOnSave.allFeatures

type: ['null', 'boolean']
Check with all features (will be passed as --all-features). Defaults to rust-analyzer.cargo.allFeatures.

rust-analyzer.checkOnSave.features

type: ['null', 'array']
List of features to activate. Defaults to rust-analyzer.cargo.features.

key value
items {‘type’: ‘string’}

rust-analyzer.checkOnSave.target

type: ['null', 'string']
Check for a specific target. Defaults to rust-analyzer.cargo.target.

rust-analyzer.cargoRunner

type: ['null', 'string']
Custom cargo runner extension ID.

rust-analyzer.runnableEnv

anyOf:

{'type': 'null'}
{'type': 'array', 'items': {'type': 'object', 'properties': {'mask': {'type': 'string', 'description': 'Runnable name mask'}, 'env': {'type': 'object', 'description': 'Variables in form of { "key": "value"}'}}}}
{'type': 'object', 'description': 'Variables in form of { "key": "value"}'}

Environment variables passed to the runnable launched using Test or Debug lens or rust-analyzer.run command.

rust-analyzer.inlayHints.enable

type: boolean
default: True
Whether to show inlay hints

rust-analyzer.inlayHints.typeHints

type: boolean
default: True
Whether to show inlay type hints for variables.

rust-analyzer.inlayHints.chainingHints

type: boolean
default: True
Whether to show inlay type hints for method chains.

rust-analyzer.inlayHints.parameterHints

type: boolean
default: True
Whether to show function parameter name inlay hints at the call site.

rust-analyzer.inlayHints.maxLength

type: ['null', 'integer']
default: 20
minimum: 0
Maximum length for inlay hints

key value
exclusiveMinimum True

rust-analyzer.completion.addCallParenthesis

type: boolean
default: True
Whether to add parenthesis when completing functions

rust-analyzer.completion.addCallArgumentSnippets

type: boolean
default: True
Whether to add argument snippets when completing functions

rust-analyzer.completion.postfix.enable

type: boolean
default: True
Whether to show postfix snippets like dbg, if, not, etc.

rust-analyzer.callInfo.full

type: boolean
default: True
Show function name and docs in parameter hints

rust-analyzer.updates.channel

type: string
default: stable
Choose "nightly" updates to get the latest features and bug fixes every day. While "stable" releases occur weekly and don’t contain cutting-edge features from VSCode proposed APIs

possible values

value description
stable "stable" updates are shipped weekly, they don’t contain cutting-edge features from VSCode proposed APIs but have less bugs in general
nightly "nightly" updates are shipped daily (extension updates automatically by downloading artifacts directly from GitHub), they contain cutting-edge features and latest bug fixes. These releases help us get your feedback very quickly and speed up rust-analyzer development drastically

rust-analyzer.updates.askBeforeDownload

type: boolean
default: True
Whether to ask for permission before downloading any files from the Internet

rust-analyzer.serverPath

type: ['null', 'string']
Path to rust-analyzer executable (points to bundled binary by default). If this is set, then “rust-analyzer.updates.channel” setting is not used

rust-analyzer.trace.server

type: string
default: off
Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users)

possible values

value description
off No traces
messages Error only
verbose Full log
key value
scope window

rust-analyzer.trace.extension

type: boolean
default: False
Enable logging of VS Code extensions itself

rust-analyzer.procMacro.enable

type: boolean
default: False
Enable Proc macro support, cargo.loadOutDirsFromCheck must be enabled.

rust-analyzer.debug.engine

type: string
default: auto
Preferred debug engine.

possible values

value description
auto First try to use CodeLLDB, if it’s not installed try to use MS C++ tools.
vadimcn.vscode-lldb Use CodeLLDB
ms-vscode.cpptools Use MS C++ tools

rust-analyzer.debug.sourceFileMap

type: object
default:

{
  "/rustc/<id>": "${env:USERPROFILE}/.rustup/toolchains/<toolchain-id>/lib/rustlib/src/rust"
}

Optional source file mappings passed to the debug engine.

rust-analyzer.debug.openDebugPane

type: boolean
default: False
Whether to open up the Debug Pane on debugging start.

rust-analyzer.debug.engineSettings

type: object
default: {}
Optional settings passed to the debug engine. Example: { “lldb”: { “terminal”:“external”} }

rust-analyzer.lens.enable

type: boolean
default: True
Whether to show CodeLens in Rust files.

rust-analyzer.lens.run

type: boolean
default: True
Whether to show Run lens. Only applies when #rust-analyzer.lens.enable# is set.

rust-analyzer.lens.debug

type: boolean
default: True
Whether to show Debug lens. Only applies when #rust-analyzer.lens.enable# is set.

rust-analyzer.lens.implementations

type: boolean
default: True
Whether to show Implementations lens. Only applies when #rust-analyzer.lens.enable# is set.

rust-analyzer.lens.methodReferences

type: boolean
default: False
Whether to show Method References lens. Only applies when #rust-analyzer.lens.enable# is set.

rust-analyzer.hoverActions.enable

type: boolean
default: True
Whether to show HoverActions in Rust files.

rust-analyzer.hoverActions.implementations

type: boolean
default: True
Whether to show Implementations action. Only applies when #rust-analyzer.hoverActions.enable# is set.

rust-analyzer.hoverActions.run

type: boolean
default: True
Whether to show Run action. Only applies when #rust-analyzer.hoverActions.enable# is set.

rust-analyzer.hoverActions.debug

type: boolean
default: True
Whether to show Debug action. Only applies when #rust-analyzer.hoverActions.enable# is set.

rust-analyzer.hoverActions.gotoTypeDef

type: boolean
default: True
Whether to show Go to Type Definition action. Only applies when #rust-analyzer.hoverActions.enable# is set.

rust-analyzer.linkedProjects

type: array
Disable project auto-discovery in favor of explicitly specified set of projects.
Elements must be paths pointing to Cargo.toml, rust-project.json, or JSON objects in rust-project.json format

key value
items {‘type’: [‘string’, ‘object’]}

rust-analyzer.diagnostics.enable

type: boolean
default: True
Whether to show native rust-analyzer diagnostics.

rust-analyzer.diagnostics.enableExperimental

type: boolean
default: True
Whether to show experimental rust-analyzer diagnostics that might have more false positives than usual.

rust-analyzer.diagnostics.disabled

type: array
default: []
List of rust-analyzer diagnostics to disable

key value
items {‘type’: ‘string’}
uniqueItems True

rust-analyzer.diagnostics.warningsAsInfo

type: array
default: []
List of warnings that should be displayed with info severity. The warnings will be indicated by a blue squiggly underline in code and a blue icon in the problems panel.

key value
items {‘type’: ‘string’}
uniqueItems True

rust-analyzer.diagnostics.warningsAsHint

type: array
default: []
List of warnings that should be displayed with hint severity. The warnings will be indicated by faded text or three dots in code and will not show up in the problems panel.

key value
items {‘type’: ‘string’}
uniqueItems True

rust-analyzer.assist.importMergeBehaviour

type: string
default: full
The strategy to use when inserting new imports or merging imports.

possible values

value description
none No merging
full Merge all layers of the import trees
last Only merge the last layer of the import trees

rust-analyzer.assist.importPrefix

type: string
default: plain
The path structure for newly inserted paths to use.

possible values

value description
plain Insert import paths relative to the current module, using up to one super prefix if the parent module contains the requested item.
by_self Prefix all import paths with self if they don’t begin with self, super, crate or a crate name
by_crate Force import paths to be absolute by always starting them with crate or the crate name they refer to.

rust-analyzer.runnables.overrideCargo

type: ['null', 'string']
Command to be executed instead of ‘cargo’ for runnables.

rust-analyzer.runnables.cargoExtraArgs

type: array
default: []
Additional arguments to be passed to cargo for runnables such as tests or binaries. For example, it may be ‘–release’

key value
items {‘type’: ‘string’}

rust-analyzer.rustcSource

type: ['null', 'string']
Path to the rust compiler sources, for usage in rustc_private projects.