🦀

Rustのenum型入門

2023/08/12に公開

Rustでのenum型とは?

Rustプログラミング言語では、enum型を使用して、複数の値を一つの型で表現することができます。この記事では、enum型の基本的な使い方と理解を初心者に向けて解説します。

概要

enum型(列挙型)は、複数の値を一つの型で定義し、その型の値がそれらの値のいずれかであることを表現します。それぞれの値をバリアント(variant)と呼びます。

目次

基本的なenumの定義

enumは以下のように定義されます。

enum Direction {
    North,
    South,
    East,
    West,
}

enummatchの使い方

enum型の値は、match文を使用してパターンマッチングをすることが一般的です。

let direction = Direction::North;

match direction {
    Direction::North => println!("We are heading north!"),
    Direction::South => println!("We are heading south!"),
    Direction::East => println!("We are heading east!"),
    Direction::West => println!("We are heading west!"),
}

enumでのデータの保持

enumバリアントは、データを保持することもできます。以下は、その例です。

enum Shape {
    Circle(f64),         // 半径
    Rectangle(f64, f64), // 幅と高さ
    Square(f64),         // 一辺の長さ
}

let shape = Shape::Circle(5.0);

match shape {
    Shape::Circle(radius) => println!("It's a circle with radius {}", radius),
    Shape::Rectangle(width, height) => println!("It's a rectangle with width {} and height {}", width, height),
    Shape::Square(side) => println!("It's a square with side length {}", side),
}

標準ライブラリでのenumの使用

Rustの標準ライブラリでは、enum型が頻繁に使用されています。Result型とOption型は、特に良い例です。以下は、それぞれの型の定義の一部です。

Result

pub enum Result<T, E> {
    Ok(T),   // 成功した場合の値
    Err(E),  // エラーが発生した場合の値
}

Option

pub enum Option<T> {
    None,   // 値が存在しない場合
    Some(T), // 値が存在する場合
}

これらのenum型は、Rustプログラミングで非常に一般的で、エラーハンドリングやオプショナルな値の取り扱いなど、多岐にわたる用途で使用されています。

https://zenn.dev/keisuke333/articles/706e51194ca54c

まとめ

  • enum型は、複数の値を一つの型で表現します。
  • enum型は、バリアントにデータを保持することも可能です。
  • match文と組み合わせることで、パターンマッチングを行い、コードをより明確にします。
  • 標準ライブラリのResultOptionなどは、enumの一般的な使用例であり、多岐にわたる用途で活用されています。

enum型はRustのコードで頻繁に見かける概念です。
この記事が、enum型の基本的な理解の助けとなることを願っています。

https://doc.rust-lang.org/std/keyword.enum.html

Discussion