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

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

訳注: RHSはRight Hand Side、つまりAdd(+)演算時の右辺のことです

// This construction would impose: `Self + RHS = Output` // where RHS defaults to Self if not specified in the implementation. // このように定義しておくと、`Self + RHS = Output`であることが保証され、 // かつ、impl時にRHSの型が明示されていない場合、デフォルトでSelfと同じに // なる。 pub trait Add<RHS = Self> { type Output; fn add(self, rhs: RHS) -> Self::Output; } // `Output` must be `T<U>` so that `T<U> + T<U> = T<U>`. // `Output`は`T<U>`でなくてはならないので`T<U> + T<U> = T<U>`となる。 impl<U> Add for T<U> { type Output = T<U>; ... }

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

参照

借用(&), トレイトバウンド, 列挙型, impl & self, 演算子のオーバーロード, 参照, トレイト (X for Y), タプル.