过滤u23数组参考

问题描述 投票:0回答:1

给出对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]的方法?

给出对u32数组的引用,过滤出数字0(但可以是任何数字,实际上也可以是任何其他规则/条件)。这里有一些可行的版本,但我觉得可以做到...

rust
1个回答
0
投票

至少有Iterator.copied()

© www.soinside.com 2019 - 2024. All rights reserved.