enum(列挙型)は、あるデータが取りうるすべての値を限定する型です。enumが取りうる値はバリアントと呼ばれます。enumはmatchやその他の制御フロー演算子とも相性がよく、Rustプログラムで意図を表現するのに役立ちます。
この演習では、半構造化されたログメッセージを生成します。
まずは、いくつかのスタブ化された関数と、次の列挙型から始めます。
#[derive(Clone, PartialEq, Debug)]
pub enum LogLevel {
Info,
Warning,
Error,
}
目標は、"[<LEVEL>]: <MESSAGE>"という形式でログメッセージを出力することです。ログレベルに対応する関数を実装する必要があります。
たとえば、次のスニペットはlog関数の期待される出力を示しています。
log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"
infoの場合は次のようになります。
info("Timezone changed")
// Returns: "[INFO]: Timezone changed"
楽しんでください!
このテストスイートには、フィーチャーゲート付きのテストが1つあります。フィーチャーゲートを使うと、プログラムの特定の部分をまるごとコンパイルの対象から外せます。これについては後ほど説明します。今は、特別なテスト用の呼び出しを使ったときだけビルドされて実行されるテストがある、ということだけ覚えておいてください。
cargo test --features add-a-variant
このテストは、列挙型にバリアントを追加する方法を示すためのものです。