Open1
Traitについて調べる
「Rustのトレイトって何ですか?」って聞かれるたびに、「インターフェースみたいなものだよ」と答えたけど、ちゃんと理解していないのはまずいと思ったので調べる。(参考記事)
後半の部分まではまだ噛み砕けていないが、インターフェースとトレイトの違いについていくつかの点は理解できた。トレイトは、デフォルト実装を持たせることができること、そして既存の型に対しても後から実装を追加できる点で、インターフェースとは異なる。
インターフェースは、クラスや型が満たすべきメソッドやプロパティの宣言を定義し、実装そのものは持たないことが多い(持たせることのできる言語もある)。インターフェースを実装しているクラスや型であれば、関数や引数の型として使用できる。
一方で、トレイトは「満たすべき実装」を定義する点ではインターフェースに似ているが、継承関係を持たずに型に対して直接実装を加えられることが大きな違いである。また、トレイトはデフォルト実装を持つことができる。
違いは理解できたが、求める性質みたいなところはまだ腑に落ちていないくらいの感じ