Menu
Coddy logo textTech

Übersicht über Structs

Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 21 von 66.

Da du nun verstanden hast, was structs sind, wollen wir lernen, wie man sie tatsächlich erstellt und verwendet. Dazu sind zwei Schritte erforderlich: Zuerst wird die Struktur des structs definiert, anschließend werden Instanzen davon erstellt.

Um eine Struktur zu definieren, verwendest du das Schlüsselwort struct, gefolgt vom Namen der Struktur und ihren Feldern innerhalb geschweifter Klammern. Jedes Feld hat einen Namen und einen Typ:

struct User {
    username: String,
    active: bool,
}

Dies erstellt einen Bauplan für eine User-Struktur mit zwei Feldern: username vom Typ String und active vom Typ bool.

Namenskonvention: Struct-Namen in Rust sollten PascalCase (auch UpperCamelCase genannt) verwenden. Das bedeutet, dass jedes Wort mit einem Großbuchstaben beginnt, zum Beispiel User, ProductItem oder ShoppingCart. Rust wird dich warnen, wenn du dieser Konvention nicht folgst.

Sobald du eine Struktur definiert hast, kannst du Instanzen davon erstellen, indem du Werte für jedes Feld angibst:

let user1 = User {
    username: String::from("alice"),
    active: true,
};

Beachte, dass du den Namen der Struktur angibst, gefolgt von geschweiften Klammern, die jeweils den Feldnamen, einen Doppelpunkt und seinen Wert enthalten. Die Reihenfolge der Felder muss nicht der Reihenfolge ihrer Definition entsprechen.

Um auf die Felder einer Struct-Instanz zuzugreifen, verwende die Punktnotation: Schreibe den Namen der Instanz, gefolgt von einem Punkt und dem Feldnamen:

println!("Username: {}", user1.username);
println!("Active: {}", user1.active);

Hier greift user1.username auf das Feld username von user1 zu, und user1.active greift auf das Feld active zu. Du kannst diese Feldwerte überall dort verwenden, wo du eine gewöhnliche Variable verwenden würdest.

challenge icon

Aufgabe

Einfach

Du erhältst drei Eingaben: einen Produktnamen, einen Preis (als Dezimalzahl) und eine Lagerbestandsmenge (als Ganzzahl). Definiere eine Product-Struktur mit drei Feldern: name vom Typ String, price vom Typ f64 und stock vom Typ i32. Erstelle anschließend eine Instanz dieser Struktur anhand der Eingabewerte und gib die Produktinformationen aus.

Anforderungen:

  • Definiere eine Product-Struktur mit den Feldern: name: String, price: f64 und stock: i32
  • Lies die erste Eingabe als Produktnamen ein
  • Lies die zweite Eingabe ein und wandle sie für den Preis in f64 um
  • Lies die dritte Eingabe ein und wandle sie für die Lagerbestandsmenge in i32 um
  • Erstelle mit diesen Werten eine Instanz der Product-Struktur
  • Gib die Produktinformationen im unten genau angegebenen Format aus

Eingabe:

  • Erste Zeile: Produktname (z. B. Laptop)
  • Zweite Zeile: Preis als Dezimalzahl (z. B. 999.99)
  • Dritte Zeile: Lagerbestandsmenge als Ganzzahl (z. B. 15)

Ausgabe:

  • Erste Zeile: Product: [name]
  • Zweite Zeile: Price: $[price]
  • Dritte Zeile: Stock: [quantity]

Probier es selbst

use std::io;

// TODO: Definiere hier deine Product-Struktur


fn main() {
    // Produktname lesen
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    // Preis lesen
    let mut price_input = String::new();
    io::stdin().read_line(&mut price_input).expect("Failed to read line");
    let price: f64 = price_input.trim().parse().expect("Failed to parse price");
    
    // Lagermenge lesen
    let mut stock_input = String::new();
    io::stdin().read_line(&mut stock_input).expect("Failed to read line");
    let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
    
    // TODO: Erstelle eine Instanz der Product-Struktur mit den Eingabewerten
    
    
    // TODO: Gib die Produktinformationen im erforderlichen Format aus
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss

Übe selbstständig: Online-Rust-Compiler