注:この質問は Rust 1.0 以降廃止されました。特性には、型パラメータの代わりに関連付けられた型 があり、ブランケット実装
Iterator
がに追加されました。Item
Iterator
Box<Iterator>
イテレータを返す trait メソッドを定義したい。実際の戻り値の型を指定することは避けたいので、抽象戻り値の型をアンボックス化するまでは、trait オブジェクトを使用します。これは、メソッドが を返すことを意味しますBox<Iterator<A>>
。しかし、ボックス化された特性オブジェクトの使用方法がわかりません。タイプのオブジェクトを反復処理できませんBox<Iterator<A>>
:
fn main() {
let xs = vec![0u, 1, 2, 3];
let boxed_iter = box xs.iter() as Box<Iterator<&uint>>;
for x in boxed_iter {}
}
これは でエラーになり"for" loop expression does not implement the "Iterator" trait
ます。
だから私の質問は次のとおりBox<Iterator<A>>
です。または、より一般的には、ボックス化された特性オブジェクトをどのように使用できますか?