Я пытаюсь вычислить 10,001-е простое число в Rust (Project Euler 7), и как часть этого мой метод проверки, является ли целое число простым числом, ссылается на вектор:
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
}
Когда я пытаюсь сослаться на вектор, я получаю следующую ошибку:
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
Что я должен сделать с primes
, чтобы иметь возможность получить к нему доступ в функции vectorIsPrime
?