gpt4 book ai didi

rust - 在 Rust 中使用 from_iter 创建 BTreeSet

转载 作者:行者123 更新时间:2023-11-29 08:05:39 25 4
gpt4 key购买 nike

另一个基本的 Rust 问题:有人可以举一个使用 from_iter 的例子吗?创建BTreeSet

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

let triangles = range(1, top).map(|x| x*(x+1)/2);
let bset: BTreeSet<uint> = BTreeSet::from_iter(triangles);

给出错误:

.../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);

好的,这是一个特征,所以应该是一个对象方法:

let triangles = range(1, top).map(|x| x*(x+1)/2);
let bset: BTreeSet<uint> = BTreeSet::new();
return bset.from_iter(triangles);

但这给出了一个错误:

    .../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);

那么,怎样才是正确的使用方法呢?

最佳答案

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

let bset: BTreeSet<uint> = FromIterator::from_iter(triangles);

但我认为使用 .collect() 更为惯用:

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

关于rust - 在 Rust 中使用 from_iter 创建 BTreeSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com