의 내가 소수와 힘의 벡터 있다고 가정 해 봅시다 :`& (& usize, & u32)`와 같은 패턴과 어떻게 일치합니까?
let mut primes: Vec<usize> = ...;
let mut powers: Vec<u32> = ...;
그것은 사실 primes.len() == powers.len()
즉. ,
primes.iter().zip(powers)
.filter(|(p, power)| power > 0)
.map(|(p, power)| p)
.collect::<Vec<usize>>()
컴파일러가 많이 불평 :
는 I (이 코드는 적절한 심판 및 derefs 누락 된 경우), 사용자에 0의 대응하는 전력 값이 소수의 목록을 반환하고 싶은 당신이 상상할 수도 있듯이. 특히 filter
은 &(&usize, &u32)
유형의 인수를 받고 있지만 패턴 일치에서 올바르게 참조 해제되지 않았습니다. 컴파일러에서 제안하는 다양한 패턴 (예 : &(&p, &power)
, 나에게 가장 의미가있는 패턴)을 시도했지만 운이 없었습니다. power > 0
비교없이 문제를 비교할 수 있도록 패턴 일치를 올바르게 수행하고 결국 Vec<usize>
을 수집 할 수 있습니까? 작동