Skip to content

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.

cargo.binstall

  • Type: Bool
  • Env: MISE_CARGO_BINSTALL
  • Default: true

If true, mise will use cargo binstall instead of cargo install if cargo-binstall is installed and on PATH. This makes installing CLIs with cargo much faster by downloading precompiled binaries.

You can install it with mise:

mise use -g cargo-binstall

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: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: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:github.com/username/demo" = { version = "latest", locked = false }

Licensed under the MIT License. Maintained by @jdx and friends.