Menu
Coddy logo textTech

Panoramica sulle struct

Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 21 di 66.

Ora che hai capito cosa sono le struct, impariamo a crearle e usarle concretamente. Questo comporta due passaggi: prima definire la struttura della struct, poi crearne delle istanze.

Per definire una struct, usi la parola chiave struct seguita dal nome della struct e dai suoi campi racchiusi tra parentesi graffe. Ogni campo ha un nome e un tipo:

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

Questo crea un modello per una struct User con due campi: username di tipo String e active di tipo bool.

Convenzione di denominazione: i nomi delle struct in Rust dovrebbero usare PascalCase (detto anche UpperCamelCase), ovvero ogni parola inizia con una lettera maiuscola, ad esempio User, ProductItem o ShoppingCart. Rust ti avviserà se non segui questa convenzione.

Una volta definita una struct, puoi crearne istanze specificando i valori per ciascun campo:

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

Nota che fornisci il nome della struct seguito da parentesi graffe contenenti il nome di ciascun campo, due punti e il relativo valore. L’ordine dei campi non deve necessariamente corrispondere all’ordine nella definizione.

Per accedere ai campi di un'istanza di struct, usa la notazione con il punto: scrivi il nome dell'istanza seguito da un punto e dal nome del campo:

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

Qui, user1.username accede al campo username di user1 e user1.active accede al campo active. Puoi usare questi valori dei campi ovunque useresti una normale variabile.

challenge icon

Sfida

Facile

Riceverai tre input: il nome di un prodotto, un prezzo (come numero decimale) e una quantità disponibile (come numero intero). Definisci una struct Product con tre campi: name di tipo String, price di tipo f64 e stock di tipo i32. Poi crea un'istanza di questa struct usando i valori di input e stampa le informazioni sul prodotto.

Requisiti:

  • Definisci una struct Product con i campi: name: String, price: f64 e stock: i32
  • Leggi il primo input come nome del prodotto
  • Leggi il secondo input e convertilo in f64 per il prezzo
  • Leggi il terzo input e convertilo in i32 per la quantità disponibile
  • Crea un'istanza della struct Product con questi valori
  • Stampa le informazioni sul prodotto esattamente nel formato mostrato qui sotto

Input:

  • Prima riga: nome del prodotto (ad es., Laptop)
  • Seconda riga: prezzo come numero decimale (ad es., 999.99)
  • Terza riga: quantità disponibile come numero intero (ad es., 15)

Output:

  • Prima riga: Product: [name]
  • Seconda riga: Price: $[price]
  • Terza riga: Stock: [quantity]

Provalo tu

use std::io;

// TODO: Definisci qui la struct Product


fn main() {
    // Leggi il nome del prodotto
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    // Leggi il prezzo
    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");
    
    // Leggi la quantità in magazzino
    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: Crea un'istanza della struct Product usando i valori di input
    
    
    // TODO: Stampa le informazioni sul prodotto nel formato richiesto
    
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Rust online