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łądPomyśl o tym w ten sposób:
- Używanie
&jest jak przeglądanie albumu ze zdjęciami: możesz zobaczyć wszystkie zdjęcia, ale album pozostaje nienaruszony - 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.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloSkrócone operacje arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawowe wejście i wyjście
Wyświetlanie w konsoliOdczytywanie danych od użytkownikaPowtórka – do 120Powtórka – prawda czy fałsz5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka — prosta logikaOperatory logiczne, część 311Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneWiele wartości zwracanychPowtórka – funkcja SigmaPowtórka – funkcja walidująca14Iterowanie po tablicach
Przewodnik po zakresachUlepszona pętla forPożyczanie w pętliTypowe operacje na tablicach3Zmienne – część 2
Deklarowanie typuKonwencje nazewnictwaWnioskowanie o typiePodsumowanie – inicjalizacja zmiennychRzutowanie typów9Pętle
Pętla for dla sekwencjiPętla whileInstrukcja breakInstrukcja continuePętle zagnieżdżoneEtykiety pętliPętla nieskończonaPodsumowanie — dynamiczne dane wejściowe12Podstawy tablic
Deklarowanie tablicTablica jako parametrDostęp do elementówModyfikowanie tablicPodsumowanie — czytelny wydruk tablicy15Operacje na ciągach znaków
Metody ciągów znakówMakro format!Konwersja ciągów znakówPowtórka — formatowaniePoćwicz samodzielnie: Kompilator Rust online