给定u32
的一部分,我想过滤出数字0。这可以是任何数字或任何其他规则/条件。
这里有一些可行的版本,但我觉得可以做得更简单:
fn test(factors: &[u32]) {
let factors1 = factors
.iter()
.map(|&x| x as u32)
.filter(|x| *x != 0)
.collect::<Vec<u32>>();
let factors1 = factors
.iter()
.map(|&x| x as u32)
.filter(|&x| x != 0)
.collect::<Vec<u32>>();
let factors2 = factors
.iter()
.filter(|x| **x != 0)
.collect::<Vec<&u32>>();
let factors3 = factors
.iter()
.filter(|&&x| x != 0)
.collect::<Vec<&u32>>();
}
我期待这样的简单操作(无效):
let factors4 = factors.iter().filter(|x| x != 0).collect();
可能有帮助的事情是:
- 是否可以将
&u32
转换/克隆为u32
? - 是否可以将
&[u32]
克隆到[u32]
?