# Program arguments

## Standard Library

The command line arguments can be accessed using `std::env::args`, which returns an iterator that yields a `String` for each argument:

    use std::env;

    fn main() {
        let args: Vec<String> = env::args().collect();

        // The first argument is the path that was used to call the program.
        println!("My path is {}.", args[0]);

        // The rest of the arguments are the passed command line parameters.
        // Call the program like this:
        //   $ ./args arg1 arg2
        println!("I got {:?} arguments: {:?}.", args.len() - 1, &args[1..]);
    }

    $ ./args 1 2 3
    My path is ./args.
    I got 3 arguments: ["1", "2", "3"].

## Crates

Alternatively, there are numerous crates that can provide extra functionality when creating command-line applications. The Rust Cookbook exhibits best practices on how to use one of the more popular command line argument crates, `clap`.