Accessing Command Line Arguments in Rust

Beginner

This tutorial is from open-source community. Access the source code

Introduction

In this lab, you can access command line arguments in Rust using the std::env::args function, which returns an iterator that yields a String for each argument. The first argument in the returned vector is the path used to call the program, while the rest of the arguments are the command line parameters. Alternatively, you can use crates like clap for more advanced command line argument handling.

Note: If the lab does not specify a file name, you can use any file name you want. For example, you can use main.rs, compile and run it with rustc main.rs && ./main.

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.

Summary

Congratulations! You have completed the Program Arguments lab. You can practice more labs in LabEx to improve your skills.