テストケース:単位を扱う

共通の単位同士を扱う際のチェックのために、Addを幽霊型を用いた実装にすると便利な場合があります。その場合Addトレイトは以下のようになります。

// このように定義しておくと、`Self + RHS = Output`であることが保証され、 // かつ、impl時にRHSの型が明示されていない場合、デフォルトでSelfと同じに // なります。 pub trait Add<RHS = Self> { type Output; fn add(self, rhs: RHS) -> Self::Output; } // `Output`は`T<U>`でなくてはならないので`T<U> + T<U> = T<U>`となります。 impl<U> Add for T<U> { type Output = T<U>; ... }

以下は全体を示した例です。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

参照

借用 (&), 境界 (X: Y), 列挙型, impl & self, 演算子のオーバーロード, ref, トレイト (X for Y), タプル構造体.