cargo-appraiser

What's this
cargo-appraiser
is an LSP server for your Cargo.toml
files. It helps you understand the relationship between your declared dependencies (the desired state in Cargo.toml
) and what cargo
has actually resolved and put into your Cargo.lock
file (the actual state). This insight allows you to quickly see if your dependencies are up-to-date, identify potential version conflicts, and navigate complex workspaces with greater clarity.
Features
- Workspace
- hover on members will show the list of members
- Dependencies
- version decorations

- hover on version will show the available versions

- hover on git dependency will show the git reference and commit

- hover on
features
will show available features, hover on a feature name
will show its values

- code action on dependency's
version

cargo update
code action on dependency's version
and workspace
- goto definition on workspace dependency
- Audit
- Show warning and vulnerability information on dependencies.
- This feature is enabled by default. To disable it, check the
audit.disabled
config.
- Requires the
cargo audit
command. Install it by running: cargo install cargo-audit --locked
.
- For more details, see cargo-audit.
Config
VSCode specific config
{
//the default for light and highContrastLight
"cargo-appraiser.decorationColor.light": {
"notParsed": "#808080",
"latest": "#006400",
"local": "#00008B",
"notInstalled": "#808080",
"mixedUpgradeable": "#B8860B",
"compatibleLatest": "#B8860B",
"nonCompatibleLatest": "#B8860B",
"yanked": "#FF0000",
"git": "#800080"
},
//the default for dark and highContrast
"cargo-appraiser.decorationColor.dark": {
"notParsed": "#808080",
"latest": "#006400",
"local": "#00008B",
"notInstalled": "#808080",
"mixedUpgradeable": "#FF8C00",
"compatibleLatest": "#FF8C00",
"nonCompatibleLatest": "#FF8C00",
"yanked": "#FF0000",
"git": "#800080"
},
"cargo-appraiser.decorationColor.highContrastLight": {
//same as light
},
"cargo-appraiser.decorationColor.highContrast": {
//same as dark
},
//extra environment variables to pass to the cargo-appraiser server
"cargo-appraiser.extraEnv": {
"RUST_LOG": "info"
},
//custom path to the cargo-appraiser server binary. If set, this will be used instead of downloading from GitHub.
"cargo-appraiser.serverPath": ""
}
lsp initialization options
To apply these config, you need to restart the lsp.
Examples
{
"cargo-appraiser.decorationFormatter": {}, //see below
"cargo-appraiser.audit": {} //see below
}
{
"lsp": {
"cargo-appraiser": {
"initialization_options": {
"decorationFormatter": {}, //see below
"audit": {} //see below
}
}
}
}
Default values
{
/// the formatter has 7 fields:
/// latest: the dependency has the latest version installed
/// local: the dependency is a local path dependency
/// not_installed: the dependency is not installed maybe because of platform mismatch
/// loading: the dependency is loading
/// mixed_upgradeable: the installed version has an compatible upgrade, but the latest version is not compatible with the current version requirement
/// compatible_latest: the installed version can update to latest version
/// noncompatible_latest: the installed version can't upate to latest version and there is no compatible upgrade
/// yanked: the installed version is yanked
/// git: the dependency is a git dependency, support {{ref}}, {{commit}} template strings
///
/// a dependency is in `waiting` state for 2 possible reasons:
/// 1. wait for `cargo` to run. `Cargo.toml` is not saved, so `cargo` haven't picked up the change.
/// 2. wait for `cargo` to finish. `cargo` is running in process to resolve the dependency.
///
/// each field's value may has 3 template strings:
/// - installed: the installed version
/// - latest_matched: the latest compatible version
/// - latest: the latest version, the latest version may or may not be compatilbe with the version requirement
///
/// the default formatter is:
"decorationFormatter": {
"latest": "✅ {{installed}}",
"local": "Local",
"not_installed": "Not installed",
"waiting": "Waiting...",
"mixed_upgradeable": "🚀🔒 {{installed}} -> {{latest_matched}}, {{latest}}",
"compatible_latest": "🚀 {{installed}} -> {{latest}}",
"noncompatible_latest": "🔒 {{installed}}, {{latest}}",
"yanked": "❌ yanked {{installed}}, {{latest_matched}}",
"git": "🐙 {{commit}}"
},
"audit":{
"disabled": false,
// "warning" will show warning and vulnerability
// "vulnerability" will only show vulnerability
"level": "warning"
}
}
Supported Editors
VSCode is the main supported editor.
Enable inlay_hints
in settings.
"inlay_hints": {
"enabled": true
}
Vim has minimal support for now.
Thanks to