Rust 使用来自iter的材料在锈迹中生成BTreeSet

Rust 使用来自iter的材料在锈迹中生成BTreeSet,rust,Rust,另一个基本的问题是:有人能举一个使用创建的例子吗 据推测,BTreeSet确实实现了FromIterator特性,但最有用的形式是: let triangles = range(1, top).map(|x| x*(x+1)/2); let bset: BTreeSet<uint> = BTreeSet::from_iter(triangles); 让三角形=范围(1,顶部).map(|x | x*(x+1)/2); 设bset:BTreeSet=BTreeSet::from_it

另一个基本的问题是:有人能举一个使用创建的例子吗

据推测,BTreeSet确实实现了FromIterator特性,但最有用的形式是:

let triangles = range(1, top).map(|x| x*(x+1)/2);
let bset: BTreeSet<uint> = BTreeSet::from_iter(triangles);
让三角形=范围(1,顶部).map(|x | x*(x+1)/2);
设bset:BTreeSet=BTreeSet::from_iter(三角形);
给出错误:

.../src/main.rs:28:32: 28:51 error: unresolved name `BTreeSet::from_iter`. .../src/main.rs:28
 let bset: BTreeSet<uint> = BTreeSet::from_iter(triangles);
../src/main.rs:28:32:28:51错误:未解析的名称`BTreeSet::from_iter`/src/main.rs:28
设bset:BTreeSet=BTreeSet::from_iter(三角形);
好的,这是一个特性,所以应该是一个对象方法:

let triangles = range(1, top).map(|x| x*(x+1)/2);
let bset: BTreeSet<uint> = BTreeSet::new();
return bset.from_iter(triangles);
让三角形=范围(1,顶部).map(|x | x*(x+1)/2);
设bset:BTreeSet=BTreeSet::new();
从iter返回bset(三角形);
但这会产生一个错误:

    .../src/main.rs:29:17: 29:37 error: type `collections::btree::set::BTreeSet<uint>` does not implement any method in scope named `from_iter`
.../src/main.rs:29     return bset.from_iter(triangles);
                                                                   ^~~~~~~~~~~~~~~~~~~~
.../src/main.rs:29:37: 29:37 note: found defined static methods, maybe a `self` is missing?
.../src/main.rs:29:17: 29:37 note: candidate #1 is defined in the trait `core::iter::FromIterator`
.../src/main.rs:29     return bset.from_iter(triangles);
../src/main.rs:29:17:29:37错误:type`collections::btree::set::BTreeSet`在名为`from_iter`的范围内未实现任何方法`
…/src/main.rs:29从iter返回b集(三角形);
^~~~~~~~~~~~~~~~~~~~
…/src/main.rs:29:37:29:37注意:找到定义的静态方法,可能缺少“self”?
…/src/main.rs:29:17:29:37注:候选#1在trait`core::iter::fromtiterator中定义`
…/src/main.rs:29从iter返回b集(三角形);

那么,使用它的正确方法是什么呢?

看起来需要用特征的名称来限定它:

let bset: BTreeSet<uint> = FromIterator::from_iter(triangles);
让bset:BTreeSet=FromIterator::from_iter(三角形);
但我认为它更适合使用。collect():

让bset:BTreeSet=range(1,10).map(|x | x*(x+1)/2).collect();

我似乎记得以前遇到过这种情况。同样的名称查找问题也发生在我的别名上,这两次我都非常困惑,直到意识到我必须找出真正声明该方法的类型/特征。不知道collect()可以这样使用,肯定是正确的方法,谢谢!
let bset: BTreeSet<uint> = range(1, 10).map(|x| x*(x+1)/2).collect();