7

注:この質問は Rust 1.0 以降廃止されました。特性には、型パラメータの代わりに関連付けられた型 があり、ブランケット実装Iteratorがに追加されました。ItemIteratorBox<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>>です。または、より一般的には、ボックス化された特性オブジェクトをどのように使用できますか?

4

1 に答える 1