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:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Or you can install it via mise:
mise use -g rust
Usage
The following installs the latest version of eza and sets it as the active version on PATH:
$ 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:
[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:
# 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
):
[tools]
"cargo:cargo-edit" = { version = "latest", features = "add" }
default-features
Disable default features (passed as cargo install --no-default-features
):
[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
):
[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>
):
[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:
[tools]
"cargo:github.com/username/demo" = { version = "latest", locked = false }