rust - 在 ".map(|x| *x)"之前是否有更好的 ".collect()"替代品?

在下面的片段中:

let b: Vec<usize> = a.iter().filter(|x| **x > 5).map(|x| *x).collect();

有没有更好的方法让 b 成为值向量而不是引用? (而不是 .map(|x| *x))

是否有类似的东西:

fn iter_values<T : Copy>(c: &Vec<T>) -> std::iter::Map<std::slice::Iter<T>, fn(&T) -> T> {
    c.iter().map(|x| *x)
}

可以这样使用:

let b: Vec<usize> = iter_values(&a).filter(|x| *x > 5).collect();

最佳答案

使用.copied :

let b: Vec<usize> = a.iter().copied().filter(|x| *x > 5).collect();

或者您可以使用 .cloned它适用于实现 Clone 的任何类型,但请注意,这可能会导致通过克隆将引用转换为对象的不小成本。

关于rust - 在 ".map(|x| *x)"之前是否有更好的 ".collect()"替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70328541/

相关文章:

python - 过滤列,指定区分大小写

react-native - react native : Build apk file using

microsoft-graph-api - MS Graph Mail 在商店中找不到指定的对象

python - 字典理解 Python

spring - 摆脱 spring-boot-starter-data-mongodb 对易受攻击

java - 为什么 null 安全很重要

reactjs - Material UI V5 主题定制

kotlin - 在 kotlin 中更改变量内部参数的值

go - 为什么 DefaultMask() 方法在 Golang 中有一个 IP 类型的接收者?

python - 使用正则表达式 python 删除德语中的女性结尾