Closed2

Rust-TPRLを勉強する

shooonngshooonng

テスト

#[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");
このスクラップは2021/10/28にクローズされました