Programmiersprachen Rust

Rust - Arrays und Vektoren

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.


3 Minuten Lesezeit
14 Okt 2024
documents/computer-1209641_1920.jpg

Was lerne ich in diesem Kurs?

Dieses Tutorial zeigt, wie Arrays und Vektoren in Rust verwendet werden, was ihre Unterschiede sind und wie man sie in Programmen effizient einsetzt.

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.

1. Arrays in Rust

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.

Eigenschaften von Arrays

  • Feste Größe: Die Größe eines Arrays wird beim Erstellen festgelegt und kann nicht geändert werden.
  • Zugriff auf Elemente: Der Zugriff auf Array-Elemente erfolgt über Indizes, beginnend bei 0.
  • Stack-gespeichert: Elemente werden auf dem Stack gespeichert.

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.

2. Vektoren (Vec)

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.

Eigenschaften von Vektoren

  • Dynamische Größe: Vektoren können zur Laufzeit vergrößert oder verkleinert werden.
  • Heap-gespeichert: Im Gegensatz zu Arrays werden Vektoren im Heap gespeichert, was es ermöglicht, die Größe zur Laufzeit zu ändern.
  • Mutabilität: Ein Vektor muss als 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]
}

3. Unterschiede in der Nutzung

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);
}

4. Iteration über Arrays und Vektoren

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.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

5-Tages Seminar Einführung in Rust

Dieses 5-tägige Rust-Seminar bietet eine fundierte Einführung in die Grundlagen von Rust, darunter Speicherverwaltung (Ownership, Borrowing), der Standardbibliothek und Fehlerbehandlung. Die Teilnehmer lernen, wie man sauberen und sicheren Rust-Code schreibt, Module importiert und die umfangreichen Funktionen der Rust-Standardbibliothek nutzt.

5 days fulltime Online

Nächster Termin: 20. Januar 2025
Preis pro Person: 1900,00 EUR

Rabattaktion: 3 für den Preis von 2!

Kein Seminar dabei?

Schreiben Sie uns an, vielleicht finden wir eine Möglichkeit.

Nutzen Sie dazu unser Kontaktformular.