2016-09-15 7 views
0

のメンバーの種類の要件を置く:は、私は別の形質を実装形質を持つ形質実装

trait RandomAccessIterator : Sub + VariousOthers {} 

どのように私は、この特性のすべての実装のためのことを、引き算の結果を指定してください(OutputタイプはSub)は、特定のタイプである必要があります(isizeなど)。このようにして、この特性を実装するオブジェクトを使用する汎用関数を記述すると、A - Bの結果が型isizeであることがわかります(さらに重要なのは、コンパイラが知っていることです)。

+1

'trait RandomAccessIterator:Sub + VariousOthers + Sized {}'は機能しませんか?あなたが既に試したものが*どのように失敗したかを示すコードを提供していませんでした。私はその70kの評判を持つ人からもっと多くを期待しています:-(。 – Shepmaster

+0

@Shepmaster:はい、それはうまくいきます。 –

+3

失敗した試みには、要件がうまく実装されたときに作業を開始するコードが含まれていると思われますが、これは有用だったでしょう。私の推測が実際に働いていることを確認するために、あなたは自分のコードを含んでいます(http://meta.stackoverflow.com/q/261592/155423)。インターネット上の他の場所で何をしているのかを調べることができます。すべてがなければ、 "コードが壊れてしまいました。あなたは修復しますか?"参照:[MCVE] – Shepmaster

答えて

2
trait RandomAccessIterator : Sub<Output = isize> + VariousOthers {} 

trait objects with associated typesためのセクションでassociated typesについてThe Rust Programming Language章で述べたように:

N=Node構文は、私たちはN型パラメータに対して、具体的な種類、Nodeを提供することができます。 E=Edgeと同じです。この制約を指定しなかった場合、この特性オブジェクトに一致するのはどのimplに一致するのかはわかりませんでした。

これは特性オブジェクトではありませんが、同じ構文が適用されます。ほとんどの人がこれに入りますwhen using operators like Mul

関連する問題