Listen

Description

第103章へようこそ。

今日のテーマは「閉じた世界と開いた世界」です。

Rustで「複数の種類を一つの型として扱いたい」とき、選択肢が二つあります。

enumで、すべてのバリアントを列挙する。

トレイトオブジェクトで、共通の能力だけを定義する。

どちらでも「異なる種類を統一的に扱う」ことはできます。

しかし、設計の意味がまったく異なる。

enumは、閉じた世界を作ります。

バリアントの一覧は定義の中に固定されている。後から追加するには定義を変更するしかない。

トレイトオブジェクトは、開いた世界を作ります。

トレイトを実装すれば、どんな型でも参加できる。後からいくらでも増やせる。

この「閉じている」か「開いている」かが、設計判断の出発点です。