Home Explore Blog CI



rustc

src/cli.md
a61232951a2bd0e6be093a45adcd25ace3e8fa3e4cd68c9d00000003000006e8
# Command-line Arguments

Command-line flags are documented in the [rustc book][cli-docs]. All *stable*
flags should be documented there. Unstable flags should be documented in the
[unstable book].

See the [forge guide for new options] for details on the *procedure* for
adding a new command-line argument.

## Guidelines

- Flags should be orthogonal to each other. For example, if we'd have a
  json-emitting variant of multiple actions `foo` and `bar`, an additional
  `--json` flag is better than adding `--foo-json` and `--bar-json`.
- Avoid flags with the `no-` prefix. Instead, use the [`parse_bool`] function,
  such as `-C embed-bitcode=no`.
- Consider the behavior if the flag is passed multiple times. In some
  situations, the values should be accumulated (in order!). In other
  situations, subsequent flags should override previous flags (for example,
  the lint-level flags). And some flags (like `-o`) should generate an error
  if it is too ambiguous what multiple flags would mean.
- Always give options a long descriptive name, if only for more understandable
  compiler scripts.
- The `--verbose` flag is for adding verbose information to `rustc`
  output. For example, using it with the `--version`
  flag gives information about the hashes of the compiler code.
- Experimental flags and options must be guarded behind the `-Z
  unstable-options` flag.


Chunks
9bc31c3c (1st chunk of `src/cli.md`)
Title: Command-line Arguments in Rustc
Summary
This section outlines guidelines for command-line arguments in the Rust compiler (rustc). Stable flags should be documented in the rustc book, while unstable flags go in the unstable book. The guide covers orthogonality, avoiding `no-` prefixes (using `parse_bool` instead), handling multiple flag occurrences, descriptive names, the purpose of `--verbose`, and the requirement to guard experimental options behind `-Z unstable-options`.