首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有提供‘`iter()’的特性?

是否有提供‘`iter()’的特性?
EN

Stack Overflow用户
提问于 2016-09-24 11:43:01
回答 1查看 3.9K关注 0票数 25

铁锈中是否有提供iter()方法的特性?我只找到了特性IntoIterator,它提供了into_iter()

这里要说明的是:我不想要提供next()next()特性,而是提供iter()的特性。

西德诺特:有时我很困惑于铁锈的利伯斯。Iterator提供next(),但IntoIterator提供into_iter() (不提供next()和用于移动的约定),而IntoIter是一个实现Iterator特性(移动值)的结构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-24 11:50:08

不,没有提供iter()的特性。

但是,IntoIterator是在对某些容器的引用上实现的。例如,&mut Vec是实现IntoIterator的三种不同类型,您会注意到它们都映射到不同的迭代器。实际上,Vec::iter()Vec::iter_mut()只是分别与&Vec::into_iter()&mut Vec::into_iter()等价的方便方法。

代码语言:javascript
复制
fn foo(_x: std::slice::Iter<i32>) {}

fn main() {
    let v = vec![1, 2, 3];
    foo(v.iter());
    foo((&v).into_iter()); // iter() exists because this is awkward
}

如果您想要编写一个泛型的、可以转换为迭代器来遍历引用的容器上的函数,您可以这样做:

代码语言:javascript
复制
fn foo<'a, I: IntoIterator<Item=&'a i32>>(_x: I) {}

fn main() {
    let v = vec![1, 2, 3];
    foo(&v);
}
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39675949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档