Rust における「継承」: スーパートレイト
// Copyright 2025 Google LLC // SPDX-License-Identifier: Apache-2.0 pub trait SuperTrait {} pub trait Trait: SuperTrait {}
-
Rust では、トレイトはほかのトレイトに依存できます。トレイトが スーパートレイトを持てることは、すでによく知られています。
-
これは表面的には継承に似ています。
-
これは継承に似た仕組みですが、データと 振る舞いを分離します。
-
振る舞いを把握しやすい状態に保ちます。
-
「多重継承」で実現したいことも、より簡単に実現できます:
ある型がどのような振る舞いを行えるかだけを、私たちはその振る舞いを必要とする ことを明確にする時点で気にすれば十分です(ジェネリックをトレイトで境界付けするとき)。
ジェネリックに複数のトレイトを指定すれば、その型がそれらすべてのトレイトの メソッドを持つことがわかります。
-
フィールドの継承は関係しません。トレイトはフィールドを公開せず、 メソッドと関連型 / 定数だけを公開します。