コマンドラインの引数を受けつけるには
標準ライブラリの環境モジュール「std::env::args」を使用します。
詳細はrustのドキュメントのこちらを参照 Accepting Command Line Arguments
std // 標準モジュール群(標準クレート)
::env // 環境モジュール( 標準モジュール群の一部)
::args() // コマンドラインの引数を読み出す関数
::Args // 引数の構造体(この構造体は、std::env::args() 関数によって返される構造体)
// この引数の構造体には、いくつかのメソッドが付加されている
.collect() // implインプリメントでArgs構造体に付加されているメソッド(関数のようなもの)でインテレータをベクタ型に変換する
※インテレータは配列のようなデータ構造の要素を順に走査していく繰り返し処理を簡潔に記述できる構文やオブジェクトとのこと
※ベクタ型は、配列に似ており、配列に比べ要素が可変でインデックスに変数を使用可能とのこと
// 標準ライブラリ「std」の環境(environment)モジュール「env」の使用を宣言します
use std::env;
// ln_argsという変数を文字列のベクタ型として定義してそこに環境モジュール内の引数関数「env::args()」で引数を読み出し、
// .collect()メソッドでベクタ型に変換
let ln_args: Vec<String> = env::args().collect();
std::env::args()を実行するとstd::env::Args構造体が読み出されArgs.collect()メソッドにてベクタ型に変換される
// 標準ライブラリ「std」の環境(environment)モジュール「env」の使用を宣言します
use std::env;
fn main() {
////////////////////////////////////////////////////////////////////////////////////////
// ln_argsという変数を文字列のベクタ型として定義してそこに環境モジュール内の引数関数「env::args()」
// で引数を読み出し、.collect()メソッドでベクタ型に変換
////////////////////////////////////////////////////////////////////////////////////////
let ln_args: Vec<String> = env::args().collect();
/////////////////////////////////////////////////////////////////////////////////////////
// 取得した引数を変数に代入する
/////////////////////////////////////////////////////////////////////////////////////////
let exefilename: &string = &ln_args[0]; //最初のベクタ[0]は、記述した自身のプログラム名が入る
let argstxt: &string = &ln_args[1]; //次のベクタ[1]から引数が入る
//////////////////////////////////////////////////////////////////////////////////////////
// 標準出力へ出力
//////////////////////////////////////////////////////////////////////////////////////////
println!("{:?}", ln_args); //la_srgs内の値をすべて表示
println!("exefilename: {}", exefilename); //exefilenameの表示
println!("argstxt: {}", argstxt); //argstxtの表示
}