翻訳の対象範囲は一部です。完全な技術リファレンスは英語の原文を参照してください。 英語版を見る →

Traits

Define shared behavior across types with trait declarations and implementations.

トレイト

トレイト(trait)は、複数の型が実装できる共通のインターフェースを定義します。Sounioにおける限定多相性(bounded polymorphism)の仕組みであり、関数の型パラメータが特定のトレイトを実装していることを要求できます。

トレイトの宣言

trait Printable {
    fn to_string(self) -> str
}

trait Measurable {
    fn magnitude(self) -> f64
}

トレイトの実装

struct Point { x: f64, y: f64 }

impl Printable for Point {
    fn to_string(self) -> str {
        format("({}, {})", self.x, self.y)
    }
}

impl Measurable for Point {
    fn magnitude(self) -> f64 {
        sqrt(self.x * self.x + self.y * self.y)
    }
}

トレイト境界

トレイト境界を使用して、ジェネリックな型パラメータを制約できます:

fn display<T: Printable>(value: T) with IO {
    println(value.to_string())
}

fn compare_magnitudes<T: Measurable>(a: T, b: T) -> bool {
    a.magnitude() > b.magnitude()
}

トレイトチェックの実装箇所

トレイト解決は self-hosted/check/traits.sio に実装されています。チェッカーは以下を検証します:

  • すべての impl ブロックが必須メソッドをすべて提供していること。
  • impl 内のメソッドシグネチャがトレイト宣言と一致すること。
  • 呼び出し箇所のトレイト境界が具象型によって満たされていること。

現在のステータス

トレイトの宣言、実装、および単純な境界は、現在のパーサーと型チェッカーでサポートされています。より高度な機能(関連型、デフォルトメソッド、トレイト継承)についてはフィーチャーステータスページで進捗を確認できます。