Rust入門 コマンドライン引数を取得して数値に変換する

from_str関数はu64型を返すのではなく、パースが成功したかどうかを表すResult型を返す。
成功した場合には、Ok(v)を返す。vが生成したu64型のデータ
失敗した場合には、Err(e)を返す。eはエラーの理由を説明するエラー値
Resultのexpectメソッドが値vを返す。失敗の場合には、eを表示しプログラムを中断する。

use std::str::FromStr;

fn main() {
    let mut numbers = Vec::new();

    for arg in std::env::args().skip(1) {
        numbers.push(u64::from_str(&arg).expect("error"));
    }
    println!("{:?}", numbers);
}

実行結果

$ ./args_to_number
[]

$ ./args_to_number 0 12
[0, 12]

$ ./args_to_number -1
thread 'main' panicked at 'error: ParseIntError { kind: InvalidDigit }', args_to_number.rs:7:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ ./args_to_number 1.2
thread 'main' panicked at 'error: ParseIntError { kind: InvalidDigit }', args_to_number.rs:7:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

$ ./args_to_number a
thread 'main' panicked at 'error: ParseIntError { kind: InvalidDigit }', args_to_number.rs:7:42
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace