Back to Mise

Cargo Backend

docs/dev-tools/backends/cargo.md

2026.5.12.9 KB
Original Source

Cargo Backend

You may install packages directly from Cargo Crates even if there isn't an asdf plugin for it.

The code for this is inside the mise repository at ./src/backend/cargo.rs.

Dependencies

This relies on having cargo installed. You can either install it on your system via rustup:

sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Or you can install it via mise:

sh
mise use -g rust

Usage

The following installs the latest version of eza and sets it as the active version on PATH:

sh
$ mise use -g cargo:eza
$ eza --version
eza - A modern, maintained replacement for ls
v0.17.1 [+git]
https://github.com/eza-community/eza

The version will be set in ~/.config/mise/config.toml with the following format:

toml
[tools]
"cargo:eza" = "latest"

Using Git

You can install any package from a Git repository using the mise command. This allows you to install a particular tag, branch, or commit revision:

sh
# Install a specific tag
mise use cargo:https://github.com/username/demo@tag:<release_tag>

# Install the latest from a branch
mise use cargo:https://github.com/username/demo@branch:<branch_name>

# Install a specific commit revision
mise use cargo:https://github.com/username/demo@rev:<commit_hash>

This will execute a cargo install command with the corresponding Git options.

Settings

Set these with mise settings set [VARIABLE] [VALUE] or by setting the environment variable listed.

<script setup> import Settings from '/components/settings.vue'; </script> <Settings child="cargo" :level="3" />

Tool Options

The following tool-options are available for the cargo backend—these go in [tools] in mise.toml.

features

Install additional components (passed as cargo install --features):

toml
[tools]
"cargo:cargo-edit" = { version = "latest", features = "add" }

default-features

Disable default features (passed as cargo install --no-default-features):

toml
[tools]
"cargo:cargo-edit" = { version = "latest", default-features = false }

bin

Select the CLI bin name to install when multiple are available (passed as cargo install --bin):

toml
[tools]
"cargo:https://github.com/username/demo" = { version = "tag:v1.0.0", bin = "demo" }

crate

Select the crate name to install when multiple are available (passed as cargo install --git=<repo> <crate>):

toml
[tools]
"cargo:https://github.com/username/demo" = { version = "tag:v1.0.0", crate = "demo" }

locked

Use Cargo.lock (passes cargo install --locked) when building CLI. This is the default behavior, pass false to disable:

toml
[tools]
"cargo:https://github.com/username/demo" = { version = "latest", locked = false }