ユーザーが拡張できる多相性のためのトレイト
// 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 を拡張できます。
このユーザーによる拡張能力は、シリアライズから ハードウェアの抽象表現、型安全な線形代数に至るまで、 多くの分野で強力です。
- トレイトがクレートで公開されていれば、そのクレートに依存するユーザーは、 自分で定義した型に対してそのトレイトを実装できます。