Borrowing in Schleifen
Teil des Abschnitts Grundlagen der Rust-Journey von Coddy. Lektion 67 von 75.
In Rust hat jeder Wert einen Besitzer, und wenn du einen Wert in einer Schleife verwendest, muss Rust wissen, ob du ihn ausleihen möchtest (ihn nur vorübergehend betrachten) oder das Eigentum übernehmen möchtest (ihn verbrauchen).
Das ist wichtig, denn wenn eine Schleife den Besitz deiner Daten übernimmt, kannst du diese Daten nach dem Ende der Schleife nicht mehr verwenden. Das Verständnis dieses Unterschieds ist der Schlüssel zum korrekten Schreiben von Schleifen in Rust.
Betrachte zum Beispiel die folgenden Daten:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;Methode 1: Die Daten betrachten (mit &):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);Methode 2: Die Daten übernehmen (ohne &):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Das würde einen Fehler verursachenStell es dir so vor:
&zu verwenden, ist wie das Betrachten eines Fotoalbums: Du kannst alle Fotos sehen, aber das Album bleibt intakt.&nicht zu verwenden, ist wie das Herausnehmen der Fotos: Du kannst sie verwenden, aber das Album wird danach leer sein.
Nun dieser Stil:
for num in numbers.iter() {}Ist diesem ähnlich:
for num in &numbers {}Und eine Mutationsschleife:
for num in numbers.iter_mut() {
*num *= 2;
}Can lässt sich auch so schreiben:
for num in &mut numbers {
*num *= 2;
}Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenVergleichsoperatorenString-Vergleich7Grundlagen IO
Ausgabe in die KonsoleBenutzereingaben lesenWiederholung - Bis 120Wiederholung - Wahr oder Falsch5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung - Einfache LogikLogische Operatoren Teil 311Funktionen
Funktionen deklarierenParameter und ArgumenteRückgabewerteMehrere RückgabewerteWiederholung - Sigma-FunktionWiederholung - Validierungsfunktion14Iterieren über Arrays
Range-LeitfadenErweiterte For-SchleifeBorrowing in SchleifenGängige Array-Operationen3Variablen Teil 2
TypdeklarationNamenskonventionenTypinferenzRückblick - Variablen initialisierenTypumwandlung6Entscheidungsfindung
If-AusdrückeIf-ElseMatch-AnweisungZusammenfassung - If-ElseVerschachteltes If-Else9Schleifen
For-Schleife über SerienWhile-SchleifeBreakContinueVerschachtelte SchleifenSchleifen-LabelsEndlosschleifeRückblick – Dynamische EingabeÜbe selbstständig: Online-Rust-Compiler