Reference Documentation for Rust Analyzer Options

2021-02-22

Rust Analyzer Options

TOC

Rust Analyzer

Rust Analyzer {#configuration_Rust Analyzer}

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.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.server.path

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.server.extraEnv

type: ['null', 'object']
Extra environment variables that will be passed to the rust-analyzer executable. Useful for passing e.g. RA_LOG for debugging.

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.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 Panel on debugging start.

rust-analyzer.debug.engineSettings

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

rust-analyzer.assist.importMergeBehavior

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.callInfo.full

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

rust-analyzer.cargo.autoreload

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

rust-analyzer.cargo.allFeatures

type: boolean
default: False
Activate all available features (--all-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.noDefaultFeatures

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

rust-analyzer.cargo.target

type: ['null', 'string']
Compilation target (target triple).

rust-analyzer.cargo.noSysroot

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

rust-analyzer.checkOnSave.enable

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

rust-analyzer.checkOnSave.allFeatures

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

rust-analyzer.checkOnSave.allTargets

type: boolean
default: True
Check all targets and tests (--all-targets).

rust-analyzer.checkOnSave.command

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

rust-analyzer.checkOnSave.noDefaultFeatures

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

rust-analyzer.checkOnSave.target

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

rust-analyzer.checkOnSave.extraArgs

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

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

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.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’}

rust-analyzer.completion.addCallArgumentSnippets

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

rust-analyzer.completion.addCallParenthesis

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

rust-analyzer.completion.postfix.enable

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

rust-analyzer.completion.autoimport.enable

type: boolean
default: True
Toggles the additional completions that automatically add imports when completed. Note that your client must specify the additionalTextEdits LSP client capability to truly have this feature enabled.

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.warningsAsHint

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

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

rust-analyzer.diagnostics.warningsAsInfo

type: array
default: []
List of warnings that should be displayed with hint severity.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’}

rust-analyzer.files.watcher

type: string
default: client
Controls file watching implementation.

rust-analyzer.files.excludeDirs

type: array
default: []
These directories will be ignored by rust-analyzer.

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

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.enable

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

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.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.linksInHover

type: boolean
default: True
Use markdown syntax for links in hover.

rust-analyzer.inlayHints.chainingHints

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

rust-analyzer.inlayHints.maxLength

type: ['null', 'integer']
minimum: 0
Maximum length for inlay hints. Default is unlimited.

rust-analyzer.inlayHints.parameterHints

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

rust-analyzer.inlayHints.typeHints

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

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.enable

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

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.run

type: boolean
default: True
Whether to show Run 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.lens.references

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

rust-analyzer.linkedProjects

type: array
default: []
Disable project auto-discovery in favor of explicitly specified set of projects.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.lruCapacity

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

rust-analyzer.notifications.cargoTomlNotFound

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

rust-analyzer.procMacro.enable

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

rust-analyzer.procMacro.server

type: ['null', 'string']
Internal config, path to proc-macro server executable (typically, this is rust-analyzer itself, but we override this in tests).

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.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, or “discover” to try to automatically find it.

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’}