ユーザーが拡張できる多相性のためのトレイト

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

// クレート A

pub trait Trait {
    fn use_trait(&self) {}
}

// クレート B、A に依存

pub struct Data(u8);

impl Trait for Data {}

fn main() {
    let data = Data(7u8);
    data.use_trait();
}
  • 通常のトレイトについてはすでに詳しく説明しましたが、enum や sealed trait と比べると、トレイトでは API がユーザーに求める振る舞いを 実装することで、ユーザーが API を拡張できます。

このユーザーによる拡張能力は、シリアライズから ハードウェアの抽象表現、型安全な線形代数に至るまで、 多くの分野で強力です。

  • トレイトがクレートで公開されていれば、そのクレートに依存するユーザーは、 自分で定義した型に対してそのトレイトを実装できます。