Was muss ich tun, um die Lösung "Einsatz von bewegt-Wert" - Fehler?

Ich versuche zu berechnen, der 10,001 st prime in Rust (Projekt Euler 7), und als Teil dieser, meine Methode, um zu überprüfen, ob oder nicht eine ganze Zahl ist prim verweist auf einen Vektor:

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
}

Wenn ich versuche, eine Referenz der Vektor, bekomme ich die folgende Fehlermeldung:

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

Was muss ich tun, um primes um der Lage sein, um den Zugang innerhalb der vectorIsPrime Funktion?

InformationsquelleAutor mjkaufer | 2015-03-01
Schreibe einen Kommentar