주어진 &[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]
있습니까?거기에 Iterator.copied()
적어도?
let factors4: Vec<u32> = factors
.iter()
.copied()
.filter(|&x| x != 0)
.collect();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다