In Rust gibt es verschiedene Möglichkeiten, eine Sammlung von Werten zu speichern. Die gebräuchlichsten Typen für solche Sammlungen sind Arrays und Vektoren (Vec), die jeweils unterschiedliche Eigenschaften und Einsatzmöglichkeiten haben.
Arrays und Vektoren sind die grundlegenden Datentypen in Rust, wenn es um die Speicherung von Listen geht. Arrays sind effizient für fixe Datenmengen, während Vektoren (Vec) für dynamisch wachsende oder schrumpfende Listen ideal sind. Rusts strikte Regeln zum Borrowing und Ownership helfen dabei, Fehler in der Speicherverwaltung zu vermeiden und die Sicherheit zur Laufzeit zu gewährleisten.
Ein Array ist eine feste, unveränderliche Sammlung von Werten desselben Typs. Die Größe eines Arrays wird zur Kompilierungszeit festgelegt und kann später nicht mehr geändert werden.
Beispiel: Array erstellen
fn main() {
let numbers: [i32; 5] = [1, 2, 3, 4, 5];
println!("{:?}", numbers);
}
In diesem Beispiel wird ein Array numbers erstellt, das aus fünf Ganzzahlen (i32) besteht. Die Größe [i32; 5] gibt an, dass das Array fünf Elemente hat.
0.Beispiel: Zugriff auf Array-Elemente
fn main() {
let numbers = [1, 2, 3, 4, 5];
println!("Erstes Element: {}", numbers[0]);
println!("Drittes Element: {}", numbers[2]);
}
Rust überprüft, ob der Index innerhalb der Array-Grenzen liegt. Wenn versucht wird, auf einen ungültigen Index zuzugreifen, wird das Programm mit einem Panik-Fehler beendet.
Ein Vektor (Vec<T>) in Rust ist eine dynamisch veränderbare Liste von Elementen. Im Gegensatz zu Arrays kann die Größe eines Vektors zur Laufzeit geändert werden, indem Elemente hinzugefügt oder entfernt werden.
Beispiel: Vektor erstellen
fn main() {
let mut numbers = Vec::new();
numbers.push(1);
numbers.push(2);
numbers.push(3);
println!("{:?}", numbers);
}
In diesem Beispiel wird ein leerer Vektor numbers erstellt, und dann werden Elemente mit der Methode push hinzugefügt.
mut deklariert werden, wenn er verändert werden soll.Beispiel: Zugriff auf Vektorelemente
fn main() {
let numbers = vec![10, 20, 30, 40];
println!("Zweites Element: {}", numbers[1]);
}
Beispiel: Elemente entfernen
fn main() {
let mut numbers = vec![1, 2, 3, 4];
numbers.pop(); // Letztes Element entfernen
println!("{:?}", numbers); // Gibt: [1, 2, 3]
}
fn main() {
let array = [1, 2, 3]; // Festes Array
let mut vector = vec![1, 2, 3]; // Dynamischer Vektor
vector.push(4); // Hinzufügen eines Wertes (nur bei Vec)
println!("{:?}", array);
println!("{:?}", vector);
}
Sowohl über Arrays als auch über Vektoren kann mit einer for-Schleife iteriert werden.
Beispiel: Iteration über ein Array
fn main() {
let numbers = [10, 20, 30];
for num in numbers.iter() {
println!("Wert: {}", num);
}
}
Beispiel: Iteration über einen Vektor
fn main() {
let numbers = vec![5, 10, 15];
for num in &numbers {
println!("Wert: {}", num);
}
}
Bei Vektoren wird eine Referenz &numbers verwendet, um sicherzustellen, dass der Vektor nicht konsumiert wird und weiterhin verwendet werden kann.
Finden Sie interessante und zum Thema passende Kurse
In diesem zweitägigen Vollzeitseminar lernen Sie, was Container sind und wie Sie Docker gezielt erstellen, verwalten und in Projekten einsetzen. Der Fokus liegt auf einem fundierten Verständnis von Docker von Grund auf und der praxisnahen Anwendung in realen Entwicklungsszenarien.
2 Tage Vollzeit Online
In diesem 5-tägigen Rust-Seminar erwerben Sie das nötige Fundament, um sichere, performante und wartbare Systeme zu entwickeln. Sie verstehen die Speicherverwaltung von Rust wirklich, nutzen die Standardbibliothek effizient und schreiben robusten Code mit klarer Fehlerbehandlung.
5 Tage Vollzeit Online
In diesem zweitägigen Git- & GitHub-Einführungskurs lernen Sie, Versionskontrolle sicher und praxisnah einzusetzen. Von den ersten Commits bis zur Zusammenarbeit mit Branches und Pull Requests erwerben Sie genau das Wissen, das Sie für effiziente Teamarbeit und saubere Projektabläufe benötigen.
2 Tage Vollzeit Online
Gerne unterstütze ich Sie bei der Auswahl oder stelle eine individuell passende Schulung für Ihre Anforderungen zusammen.