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