その他

【Rust】Enumについて

その他
この記事は約2分で読めます。

Enumについて

ある特定の文字列のみを扱う場合、Enum(Enumeration)が使用できます。

Rust以外の言語にも、Enum型を扱う言語は存在しますが、RustのEnumは一味違います。

fn main() {
    let get = Method::GET;
    let delete = Method::DELETE;
    let post = Method::POST;
    let put = Method::PUT;
}

enum Method {
    GET,
    DELETE,
    POST,
    PUT,
    HEAD,
    CONNECT,
    OPTIONS,
    TRACE,
    PATCH,
}

メモリ内での値

配列の添字のように番号が0から振られています。

enum Method {
    GET,     // 0
    DELETE,  // 1
    POST,    // 2
    PUT,     // 3
    HEAD,    // 4
    CONNECT, // 5
    OPTIONS, // 6
    TRACE,   // 7
    PATCH,   // 8
}

これらは明示して変更できます。

enum Method {
    GET,     // 0
    DELETE,  // 1
    POST,    // 2
    PUT = 5, // 5
    HEAD,    // 6
    CONNECT, // 7
    OPTIONS, // 8
    TRACE,   // 9
    PATCH,   // 10
}

値を渡して保持することも可能です。

let get = Method::GET("aaaa".to_string());

enum Method {
    GET(String),
    DELETE,
    POST,
}

Option Enum

RustにはOptionという組み込みのEnum型が用意されており、以下の2つがあります。

  • None: 値がない
  • Some(T): 値がある

オプショナルな値の表現は以下のようになります。

struct Request {
    path: String,
    query_string: Option<String>,
    method: Method,
}