Borgen
Mutables Borgen und Vektor
Abschnitt betitelt „Mutables Borgen und Vektor“fn main() { let mut v = vec![1, 2, 3]; for i in &mut v { v.push(*i); } println!("{} {} {}", v[3], v[4], v[5]);}Obwohl v mutabel geborgt wird, erlaubt dies nur die Mutation von i innerhalb der for-Schleife, nicht aber von v selbst. Daher führt der Aufruf von v.push zu einem Ownership-Fehler.
Mutable Referenzen in Vektoren
Abschnitt betitelt „Mutable Referenzen in Vektoren“fn main() { let mut v: Vec<i32> = vec![1, 2, 3]; let mut v2: Vec<&mut i32> = Vec::new(); for i in &mut v { v2.push(i); } *v2[0] = 5;
let a = *v2[0]; let b = v[0]; println!("{a} {b}");}i hat den Typ &mut i32, was bedeutet, dass es ein Zeiger auf eine Zahl innerhalb von v ist. Wenn wir also i in v2 pushen, enthält v2 Zeiger auf v. Folglich mutiert das Mutieren von v2[0] tatsächlich v[0].