# cargo

## NAME

cargo - The Rust package manager

## SYNOPSIS

`cargo [OPTIONS] COMMAND [ARGS]`
`cargo [OPTIONS] --version`
`cargo [OPTIONS] --list`
`cargo [OPTIONS] --help`
`cargo [OPTIONS] --explain CODE`

## DESCRIPTION

This program is a package manager and build tool for the Rust language, available at https://rust-lang.org.

## COMMANDS

### Build Commands

cargo-bench(1)

  Execute benchmarks of a package.

cargo-build(1)

  Compile a package.

cargo-check(1)

  Check a local package and all of its dependencies for errors.

cargo-clean(1)

  Remove artifacts that Cargo has generated in the past.

cargo-doc(1)

  Build a package’s documentation.

cargo-fetch(1)

  Fetch dependencies of a package from the network.

cargo-fix(1)

  Automatically fix lint warnings reported by rustc.

cargo-run(1)

  Run a binary or example of the local package.

cargo-rustc(1)

  Compile a package, and pass extra options to the compiler.

cargo-rustdoc(1)

  Build a package’s documentation, using specified custom flags.

cargo-test(1)

  Execute unit and integration tests of a package.

### Manifest Commands

cargo-generate-lockfile(1)

  Generate `Cargo.lock` for a project.

cargo-locate-project(1)

  Print a JSON representation of a `Cargo.toml` file’s location.

cargo-metadata(1)

  Output the resolved dependencies of a package, the concrete used versions including overrides, in machine-readable format.

cargo-pkgid(1)

  Print a fully qualified package specification.

cargo-update(1)

  Update dependencies as recorded in the local lock file.

cargo-verify-project(1)

  Check correctness of crate manifest.

### Package Commands

cargo-init(1)

  Create a new Cargo package in an existing directory.

cargo-install(1)

  Build and install a Rust binary.

cargo-new(1)

  Create a new Cargo package.

cargo-search(1)

  Search packages in crates.io.

cargo-uninstall(1)

  Remove a Rust binary.

### Publishing Commands

cargo-login(1)

  Save an API token from the registry locally.

cargo-owner(1)

  Manage the owners of a crate on the registry.

cargo-package(1)

  Assemble the local package into a distributable tarball.

cargo-publish(1)

  Upload a package to the registry.

cargo-yank(1)

  Remove a pushed crate from the index.

### General Commands

cargo-help(1)

  Display help information about Cargo.

cargo-version(1)

  Show version information.

## OPTIONS

### Special Options

-V
--version

  Print version info and exit. If used with `--verbose`, prints extra information.

--list

  List all installed Cargo subcommands. If used with `--verbose`, prints extra information.

--explain CODE

  Run `rustc --explain CODE` which will print out a detailed explanation of an error message (for example, `E0004`).

### Display Options

-v
--verbose

  Use verbose output. May be specified twice for "very verbose" output which includes extra output such as dependency warnings and build script output. May also be specified with the `term.verbose` config value.

-q
--quiet

  No output printed to stdout.

--color WHEN

  Control when colored output is used. Valid values:

  - `auto` (default): Automatically detect if color support is available on the terminal.

  - `always`: Always display colors.

  - `never`: Never display colors.

  May also be specified with the `term.color` config value.

### Manifest Options

--frozen
--locked

  Either of these flags requires that the `Cargo.lock` file is up-to-date. If the lock file is missing, or it needs to be updated, Cargo will exit with an error. The `--frozen` flag also prevents Cargo from attempting to access the network to determine if it is out-of-date.

  These may be used in environments where you want to assert that the `Cargo.lock` file is up-to-date (such as a CI build) or want to avoid network access.

### Common Options

-h
--help

  Prints help information.

-Z FLAG…​

  Unstable (nightly-only) flags to Cargo. Run `cargo -Z help` for details.

## ENVIRONMENT

See the reference for details on environment variables that Cargo reads.

## Exit Status

0

  Cargo succeeded.

101

  Cargo failed to complete.

## FILES

`~/.cargo/`

  Default location for Cargo’s "home" directory where it stores various files. The location can be changed with the `CARGO_HOME` environment variable.

`$CARGO_HOME/bin/`

  Binaries installed by cargo-install(1) will be located here. If using rustup, executables distributed with Rust are also located here.

`$CARGO_HOME/config`

  The global configuration file. See the reference for more information about configuration files.

`.cargo/config`

  Cargo automatically searches for a file named `.cargo/config` in the current directory, and all parent directories. These configuration files will be merged with the global configuration file.

`$CARGO_HOME/credentials`

  Private authentication information for logging in to a registry.

`$CARGO_HOME/registry/`

  This directory contains cached downloads of the registry index and any downloaded dependencies.

`$CARGO_HOME/git/`

  This directory contains cached downloads of git dependencies.

## EXAMPLES

1. Build a local package and all of its dependencies:

       cargo build

2. Build a package with optimizations:

       cargo build --release

3. Run tests for a cross-compiled target:

       cargo test --target i686-unknown-linux-gnu

4. Create a new package that builds an executable:

       cargo new foobar

5. Create a package in the current directory:

       mkdir foo && cd foo
       cargo init .

6. Learn about a command’s options and usage:

       cargo help clean

## BUGS

See https://github.com/rust-lang/cargo/issues for issues.

## SEE ALSO

rustc(1), rustdoc(1)