2025/08/13

Rustで学ぶ型コンストラクタ

型コンストラクタとは

型コンストラクタとは、ざっくり言うと「新しい型を作るための型」です。

普段使っているi32Stringなどは、それ自体が完成された一つの型です。

一方、型コンストラクタは、型を引数として受け取り、新しい型を生成するものです。

例えば、RustのOptionはまさに型コンストラクタです。Option<T>という形で、Tに任意の型(i32やStringなど)を渡すことで、Option<i32>Option<String>という新しい型が作られます。

Option<T>は、Some<T>(値がある場合)かNone(値がない場合)のどちらかを表すための型です。これにより、値が存在しない可能性を明示的に扱うことができ、Null参照のような予期せぬエラーを防ぐことができます。

Rustの型コンストラクタの例

RustでOption<T>をどう使うのか、簡単な例で見てみましょう。


fn main() {
    let some_number: Option<i32> = Some(5);
    let no_number: Option<i32> = None;

    match some_number {
        Some(value) => println!("値は{}です。", value),
        None => println!("値はありません。"),
    }
    match no_number {
        Some(value) => println!("値は{}です。", value),
        None => println!("値はありません。"),
    }
}

このコードでは、Option<i32>という型を使って、some_numberno_numberという2つの変数を作成しています。

let some_number: Option<i32> = Some(5);では、Optionという型コンストラクタにi32を渡し、Option<i32>という新しい型を作っています。

Some(5)は、Option<i32>型の値を生成する値コンストラクタです。

let no_number: Option<i32> = None;Noneは、Option<i32>型で値がないことを表す値です。

そして、match文で、Optionの中身を安全に取り出しています。

このように、型コンストラクタを使うことで、より安全で表現力の高いコードを書くことができます。