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