Rustを業務で書いたことがなくても、
コーディングテストのときに書けると色々便利そうなので記事にしてみます。
Rustをコーディングテストで書けると以下のようなメリットがあります。

    • Rustを書く機会を得ることができる。

 

    • 同一ファイル内にテストが書け、すぐ実行できるので正誤がわかりやすい。

 

    実行速度やメモリ使用量が小さいので、他の言語と比較して優位になる(かもしれない)。

特にこの記事では、Rustでは同一ファイル内にテストを書いて実行できるので便利そうだよということで書いています。

Rustのインストールと下準備

macとVSCodeを使っている方向けに簡単に書いておきます。

Rustのインストール

ターミナルで以下のコマンドを叩いてRustをインストールしましょう。

$ curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs/) | sh

バージョン確認

$ cargo --version

プロジェクト作成

$ cargo new your_project_name --bin

プロジェクトの実行 or build

$ cd your_project_name
$ cargo run
$ cargo build

VSCodeでプラグインをインストール

rust-analyzerというプラグインをインストールします。

rust-analyzer

Rustというプラグインがあってインストールしたくなってしまいますが、どうやら古くなっているようです。rust-analyzerを使っておいた方が良さそうです。

Rust | User Reviews

ファイル分割

main.rs内に書くこともできますが、一応ファイル分割しておきましょう。

main.rs

mod fizz_bazz;

fn main() {
    fizz_bazz::run();
}

fizz_bazz.rs

pub fn run() {
  println("sample");
}

fizzbazzを書いてみる。

適当にfizzbazz書いてみます。解答パターンは2種類ありそうなので2つ書いてみました。
fizzbazz2の方は、テストを失敗させたいので、あえてタイポを入れています。

pub fn run() {
  for i in 1..100 {
    println!("{} {}", i, return_fizz_bazz(i));
  }
  for i in 1..100 {
    println!("{} {}", i, return_fizz_bazz2(i));
  }
}

fn return_fizz_bazz(i: u32) -> &'static str {
  return if i % 15 == 0 {
    "fizzbuzz"
  } else if i % 5 == 0 {
    "buzz"
  } else if i % 3 == 0 {
    "fizz"
  } else {
    ""
  };
}

fn return_fizz_bazz2(i: u32) -> std::string::String {
  let fizz_result = if (i % 3) == 0 { "fizz" } else { "" };
  let buzz_result = if (i % 5) == 0 { "buzzzzz" } else { "" };
  let answer = format!("{}{}", fizz_result, buzz_result);
  answer
}

上記のテストをしたいので、同一ファイルの下部に以下のテストを書きます。

#[test]
fn fizz_bazz_test() {
  assert_eq!(return_fizz_bazz(1), "");
  assert_eq!(return_fizz_bazz(3), "fizz");
  assert_eq!(return_fizz_bazz(4), "");
  assert_eq!(return_fizz_bazz(5), "buzz");
  assert_eq!(return_fizz_bazz(15), "fizzbuzz");
}
#[test]
fn fizz_bazz_test2() {
  assert_eq!(return_fizz_bazz2(1), "");
  assert_eq!(return_fizz_bazz2(3), "fizz");
  assert_eq!(return_fizz_bazz2(4), "");
  assert_eq!(return_fizz_bazz2(5), "buzz");
  assert_eq!(return_fizz_bazz2(15), "fizzbuzz");
}

テストを書くと、VSCode上で#[test]の下に Run Test と表示されます。

スクリーンショット 2021-08-31 17.54.33.png

fizz_bazz_testのRun Testをクリックすると、以下のようにターミナルに表示されてテストがパスしていることがわかります。

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 3 filtered out; finished in 0.00s

なお、fizz_bazz_test2のRun Testをクリックすると、fizz_bazz_test2を混ぜていたので失敗してくれます。

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 3 filtered out; finished in 0.03s

Rustを使った実プロジェクトはまだ少ないと思いますが、
簡単なコーディングテストからであれば、
気軽に始めることができそうです。

ちなみにFizzBazzはありふれた題材ですが、
Re:FizzBuzzから始めるRust生活
みたいな素晴らしい記事もあります。

この記事をみるとFizzBazzからでもRustの理解を深めていくことができそうですね。

bannerAds