Lassen Sie uns sagen, ich habe Vektoren der Primzahlen und Befugnisse:Wie passe ich zu einem Muster wie `& (& usize, & u32)`?
let mut primes: Vec<usize> = ...;
let mut powers: Vec<u32> = ...;
Es ist eine Tatsache, dass primes.len() == powers.len()
.
Ich mag den Benutzer eine Liste von Primzahlen zurückzukehren, die einen entsprechenden Leistungswert von 0 haben (dieser Code richtigen Refs und derefs fehlt):
primes.iter().zip(powers)
.filter(|(p, power)| power > 0)
.map(|(p, power)| p)
.collect::<Vec<usize>>()
Der Compiler viel beschwert, wie du dir vorstellen kannst. Insbesondere empfängt die filter
Argumente vom Typ &(&usize, &u32)
, aber ich bin nicht korrekt in der Mustererkennung de-referenziert. Ich habe verschiedene Muster ausprobiert, die der Compiler suggeriert (z. B. &(&p, &power)
, was für mich am sinnvollsten ist), aber ohne Glück. Wie führe ich den Mustervergleich korrekt aus, damit ich den power > 0
Vergleich ohne Problem durchführen kann, und damit ich am Ende eine Vec<usize>
sammeln kann?