Chapter 08

列挙型

📌 列挙型

列挙型 は取りうる様々な値を列挙しておき,そのうちのどれか1つだけ値を取るデータ型です.列挙した値のことを 列挙子 (variant)と呼びます.構造体がフィールドの集合に対して AND の関係であると考えれば,列挙型は OR の関係にあると言えます.列挙型は enum を使って定義し,列挙子は :: で指定します.

enum IpAddrKind {
    V4,
    V6,
}
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;

列挙子はそれぞれ別々の型にすることが出来ます.

enum IpAddr {
    V4(u8, u8, u8, u8),
    V6(String),
}

let home = IpAddr::V4(127, 0, 0, 1);
let loopback = IpAddr::V6(String::from("::1"));

列挙型は,構造体のようにメソッドを定義することも出来ますし,トレイトのインスタンスにもなることが出来ます.