テスト
#[should_panic]
記載するとテストケースでpanicに入ると正常終了になる(テストが)。
expectedに文字を入れるとFAILEDしたときにその文言が出力される。
#[should_panic(expected = "Guess value must be less than or equal to 100")]
[ignore]をつけるとテストケースを無視できる。
無視されるテストのみ実行するなら
cargo test -- --ignored
extern
externを使うこと自作したクレートを呼び出すことができる。
adder2/src/lib.rs
pub fn add_two(a: i32) -> i32 { internal_adder(a, 2) }
adder2/tests/integration_test.rs
extern crate adder2; #[test] fn it_adds_two() { asser_eq!(4, adder2::add_two(2)); }
testsディレクトリは特別で#[cfg(test)]をつけなくてもテストが実行できる。
--test
cargo test --test integration_test
上記のように--testにあとにテストを実行したいファイル名を記載すると、そのファイルだけテストを実行できる。
コマンドライン引数を取得
env::args().collect()を使うとコマンドライン引数を取得することができる。CLIツールを作るときに便利そう。
let args: Vec<String> = env::args().collect();
各引数の値をとりたいとき&args[x]で取得する。
let query = &args[1]; let filename = &args[2]; println!("Searchng for {}", query); println!("In file {}", filename);
ファイルオープン
ファイルオープンにはFile::open()を使用する。
let mut f = File::open(filename).expect("file not found");
ファイルを読み込む、もしファイルがないなら「file not found」を表示させる。
ファイルの中身を格納する
空のStringを宣言してread_to_string()で宣言したStringのポインタにデータを格納する。何も記載されていない場合expect内が文字列が出力される。
let mut contents = String::new(); f.read_to_string(&mut contents) .expect("something went wrong reading the file");