Que dois-je faire pour résoudre un “utilisation de déplacés valeur d'erreur”?

Je suis en train de calculer la 10,001 st le premier à Rust (Projet Euler 7), et comme une partie de cela, ma méthode pour vérifier si un entier est premier fait référence à un vecteur:

fn main() {
    let mut count: u32 = 1;
    let mut num: u64 = 1;
    let mut primes: Vec<u64> = Vec::new();
    primes.push(2);

    while count < 10001 {
        num += 2;
        if vectorIsPrime(num, primes) {
            count += 1;
            primes.push(num);
        }
    }
}

fn vectorIsPrime(num: u64, p: Vec<u64>) -> bool {
    for i in p {
        if num > i && num % i != 0 {
            return false;
        }
    }

    true
}

Quand j'essaie de référence du vecteur, j'obtiens l'erreur suivante:

error[E0382]: use of moved value: `primes`
 --> src/main.rs:9:31
  |
9 |         if vectorIsPrime(num, primes) {
  |                               ^^^^^^ value moved here, in previous iteration of loop
  |
  = note: move occurs because `primes` has type `std::vec::Vec<u64>`, which does not implement the `Copy` trait

Que dois-je faire pour primes afin d'être en mesure d'accéder à l'intérieur de la vectorIsPrime fonction?

InformationsquelleAutor mjkaufer | 2015-03-01