Menu
Coddy logo textTech

Pożyczanie w pętli

Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 67 z 75.

W Rust każda wartość ma właściciela, a gdy używasz wartości w pętli, Rust musi wiedzieć, czy chcesz ją pożyczyć (tylko tymczasowo na nią spojrzeć), czy przejąć jej własność (zużyć ją).

To ważne, ponieważ jeśli pętla przejmie własność Twoich danych, nie będziesz już móc używać tych danych po zakończeniu pętli. Zrozumienie tej różnicy jest kluczem do poprawnego pisania pętli w Rust.

Na przykład rozważ następujące dane:

let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;

Metoda 1: Przyjrzenie się danym (używając &):

for number in &numbers {
    sum += number;
}
println!("I can use it here: {:?}", numbers);

Metoda 2: Pobieranie danych (bez &):

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// To spowodowałoby błąd

Pomyśl o tym w ten sposób:

  1. Używanie & jest jak przeglądanie albumu ze zdjęciami: możesz zobaczyć wszystkie zdjęcia, ale album pozostaje nienaruszony
  2. Nieużywanie & jest jak wyjmowanie zdjęć: możesz z nich korzystać, ale album będzie potem pusty

Teraz ten styl:

for num in numbers.iter() {}

Jest podobne do tego:

for num in &numbers {}

I pętla modyfikująca:

for num in numbers.iter_mut() { 
    *num *= 2;
}

Można to też zapisać w ten sposób:

for num in &mut numbers { 
    *num *= 2;
}

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Rust online