# cargo-run(1) ## NAME cargo-run --- Run the current package ## SYNOPSIS `cargo run` [_options_] [`--` _args_] ## DESCRIPTION Run a binary or example of the local package. All the arguments following the two dashes (`--`) are passed to the binary to run. If you're passing arguments to both Cargo and the binary, the ones after `--` go to the binary, the ones before go to Cargo. Unlike [cargo-test(1)](cargo-test.html) and [cargo-bench(1)](cargo-bench.html), `cargo run` sets the working directory of the binary executed to the current working directory, same as if it was executed in the shell directly. ## OPTIONS ### Package Selection By default, the package in the current working directory is selected. The `-p` flag can be used to choose a different package in a workspace.
-p
spec--package
spec--bin
name--example
name-F
features--features
featurespackage-name/feature-name
syntax. This flag may
be specified multiple times, which enables all specified features.--all-features
--no-default-features
default
feature of the selected packages.--target
triple<arch><sub>-<vendor>-<sys>-<abi>
. Run rustc --print target-list
for a
list of supported targets.
This may also be specified with the build.target
config value.
Note that specifying this flag makes Cargo run in a different mode where the target artifacts are placed in a separate directory. See the build cache documentation for more details.
-r
--release
release
profile.
See also the --profile
option for choosing a specific profile by name.--profile
name--timings=
fmts--timings
without an argument will default to --timings=html
.
Specifying an output format (rather than the default) is unstable and requires
-Zunstable-options
. Valid output formats:
html
(unstable, requires -Zunstable-options
): Write a human-readable file cargo-timing.html
to the
target/cargo-timings
directory with a report of the compilation. Also write
a report to the same directory with a timestamp in the filename if you want
to look at older runs. HTML output is suitable for human consumption only,
and does not provide machine-readable timing data.json
(unstable, requires -Zunstable-options
): Emit machine-readable JSON
information about timing information.--target-dir
directoryCARGO_TARGET_DIR
environment variable, or the
build.target-dir
config value.
Defaults to target
in the root of the workspace.-v
--verbose
term.verbose
config value.-q
--quiet
term.quiet
config value.--color
whenauto
(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.
--message-format
fmthuman
(default): Display in a human-readable text format. Conflicts with
short
and json
.short
: Emit shorter, human-readable text messages. Conflicts with human
and json
.json
: Emit JSON messages to stdout. See
the reference
for more details. Conflicts with human
and short
.json-diagnostic-short
: Ensure the rendered
field of JSON messages contains
the “short” rendering from rustc. Cannot be used with human
or short
.json-diagnostic-rendered-ansi
: Ensure the rendered
field of JSON messages
contains embedded ANSI color codes for respecting rustc’s default color
scheme. Cannot be used with human
or short
.json-render-diagnostics
: Instruct Cargo to not include rustc diagnostics
in JSON messages printed, but instead Cargo itself should render the
JSON diagnostics coming from rustc. Cargo’s own JSON diagnostics and others
coming from rustc are still emitted. Cannot be used with human
or short
.--manifest-path
pathCargo.toml
file. By default, Cargo searches for the
Cargo.toml
file in the current directory or any parent directory.--ignore-rust-version
rust-version
specification in packages.--locked
Cargo.lock
file was originally generated. Cargo will exit with an
error when either of the following scenarios arises:
It may be used in environments where deterministic builds are desired, such as in CI pipelines.
--offline
Beware that this may result in different dependency resolution than online mode. Cargo will restrict itself to crates that are downloaded locally, even if there might be a newer version as indicated in the local copy of the index. See the cargo-fetch(1) command to download dependencies before going offline.
May also be specified with the net.offline
config value.
--frozen
--locked
and --offline
.+
toolchaincargo
begins with +
, it will be interpreted as a rustup toolchain name (such
as +stable
or +nightly
).
See the rustup documentation
for more information about how toolchain overrides work.--config
KEY=VALUE or PATHKEY=VALUE
,
or provided as a path to an extra configuration file. This flag may be specified multiple times.
See the command-line overrides section for more information.-C
PATHCargo.toml
), as well as
the directories searched for discovering .cargo/config.toml
, for example. This option must
appear before the command name, for example cargo -C path/to/my-project build
.
This option is only available on the nightly
channel and
requires the -Z unstable-options
flag to enable (see
#10098).
-h
--help
-Z
flagcargo -Z help
for details.-j
N--jobs
Nbuild.jobs
config value. Defaults to
the number of logical CPUs. If negative, it sets the maximum number of
parallel jobs to the number of logical CPUs plus provided value. If
a string default
is provided, it sets the value back to defaults.
Should not be 0.--keep-going
For example if the current package depends on dependencies fails
and works
,
one of which fails to build, cargo run -j1
may or may not build the
one that succeeds (depending on which one of the two builds Cargo picked to run
first), whereas cargo run -j1 --keep-going
would definitely run both
builds, even if the one run first fails.