The basic Rust tooling is composed of three programs:
- cargo: The Rust package manager
 - rustc: The Rust compiler
 - rustup: The Rust toolchain manager
 
Most users will never touch (or even see) rustc directly, but will usually use rustup to install it and then let cargo orchestrate the compilation.
Running cargo without any arguments reveals the subcommands it provides:
$ cargo
Rust's package manager 
 
USAGE: 
 cargo [OPTIONS] [SUBCOMMAND] 
 
OPTIONS: 
    -V, --version           Print version info and exit 
        --list              List installed commands 
        --explain <CODE>    Run `rustc --explain CODE` 
    -v, --verbose           Use verbose output (-vv very verbose/build.rs output) 
    -q, --quiet             No output printed to stdout 
        --color <WHEN>      Coloring: auto, always, never 
        --frozen            Require Cargo.lock and cache are...