Rust における「継承」: スーパートレイト

// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0

pub trait SuperTrait {}

pub trait Trait: SuperTrait {}
  • Rust では、トレイトはほかのトレイトに依存できます。トレイトが スーパートレイトを持てることは、すでによく知られています。

  • これは表面的には継承に似ています。

  • これは継承に似た仕組みですが、データと 振る舞いを分離します。

  • 振る舞いを把握しやすい状態に保ちます。

  • 「多重継承」で実現したいことも、より簡単に実現できます:

    ある型がどのような振る舞いを行えるかだけを、私たちはその振る舞いを必要とする ことを明確にする時点で気にすれば十分です(ジェネリックをトレイトで境界付けするとき)。

    ジェネリックに複数のトレイトを指定すれば、その型がそれらすべてのトレイトの メソッドを持つことがわかります。

  • フィールドの継承は関係しません。トレイトはフィールドを公開せず、 メソッドと関連型 / 定数だけを公開します。