Hello, World!
SE VUOI PRENDERE LA CERTIFICAZIONE PER QUESTO CORSO CLICCA QUI
Ora che hai installato Rust, è tempo di scrivere il tuo primo programma Rust. È tradizione quando si impara un nuovo linguaggio scrivere un piccolo programma che stampa il testo Hello, world! sullo schermo, quindi faremo lo stesso qui!
vbnet
*Nota:* Questo corso assume una familiarità di base con la riga di comando. Rust non fa richieste specifiche riguardo alla tua modifica o strumentazione o dove risiede il tuo codice, quindi se preferisci utilizzare un ambiente di sviluppo integrato (IDE) invece della riga di comando, sentiti libero di usare il tuo IDE preferito. Molti IDE ora hanno un certo grado di supporto per Rust; controlla la documentazione dell'IDE per i dettagli. Il team di Rust si è concentrato nel rendere disponibile un ottimo supporto IDE tramite rust-analyzer. Consulta l'Appendice D per ulteriori dettagli.
Creazione di una Directory del Progetto
Inizierai creando una directory per memorizzare il tuo codice Rust. A Rust non importa dove risieda il tuo codice, ma per gli esercizi e i progetti in questo corso, suggeriamo di creare una directory dei progetti nella tua directory home e di conservare tutti i tuoi progetti lì.
Apri un terminale e inserisci i seguenti comandi per creare una directory dei progetti e una directory per il progetto “Hello, world!” all’interno della directory dei progetti.
Per Linux, macOS e PowerShell su Windows, inserisci questo:
bash
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
Per Windows CMD, inserisci questo:
bash
> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world
Scrittura ed Esecuzione di un Programma Rust
Successivamente, crea un nuovo file sorgente e chiamalo main.rs. I file Rust terminano sempre con l’estensione .rs. Se stai utilizzando più di una parola nel nome del file, la convenzione è utilizzare un trattino basso per separarle. Ad esempio, utilizza hello_world.rs piuttosto che helloworld.rs.
Ora apri il file main.rs appena creato ed inserisci il codice nel Listato 1-1.
Nome del file: main.rs
rust
fn main() {
println!("Hello, world!");
}
Listato 1-1: Un programma che stampa Hello, world!
Salva il file e torna alla finestra del terminale nella directory ~/projects/hello_world. Su Linux o macOS, inserisci i seguenti comandi per compilare ed eseguire il file:
bash
$ rustc main.rs
$ ./main
Hello, world!
Su Windows, inserisci il comando .\main.exe invece di ./main:
bash
> rustc main.rs
> .\main.exe
Hello, world!
Indipendentemente dal sistema operativo, la stringa Hello, world! dovrebbe essere stampata sul terminale. Se non vedi questa uscita, consulta la sezione “Risoluzione dei Problemi” della sezione Installazione per ottenere aiuto.
Se Hello, world! è stata stampata, congratulazioni! Hai ufficialmente scritto un programma Rust. Questo ti rende un programmatore Rust, benvenuto!
Anatomia di un Programma Rust
Rivediamo questo programma “Hello, world!” in dettaglio. Ecco il primo pezzo del puzzle:
rust
fn main() {
}
Queste righe definiscono una funzione chiamata main. La funzione main è speciale: è sempre il primo codice che viene eseguito in ogni programma eseguibile Rust. Qui, la prima riga dichiara una funzione chiamata main che non ha parametri e non restituisce nulla. Se ci fossero parametri, andrebbero all’interno delle parentesi tonde ().
Il corpo della funzione è racchiuso tra {}. Rust richiede parentesi graffe intorno a tutti i corpi delle funzioni. È uno stile corretto posizionare la parentesi graffa di apertura sulla stessa riga della dichiarazione della funzione, aggiungendo uno spazio in mezzo.
vbnet
*Nota:* Se vuoi mantenere uno stile standard tra i progetti Rust, puoi utilizzare uno strumento di formattazione automatica chiamato rustfmt per formattare il tuo codice in uno stile particolare (ulteriori informazioni su rustfmt nell'Appendice D). Il team di Rust ha incluso questo strumento nella distribuzione standard di Rust, come rustc, quindi dovrebbe essere già installato sul tuo computer!
Il corpo della funzione main contiene il seguente codice:
rust
println!("Hello, world!");
Questa riga fa tutto il lavoro in questo piccolo programma: stampa del testo sullo schermo. Ci sono quattro dettagli importanti da notare qui.
Innanzitutto, lo stile Rust è indentare con quattro spazi, non una tabulazione.
In secondo luogo, println! chiama una macro Rust. Se avesse chiamato una funzione invece, sarebbe stato inserito come println (senza il !). Discuteremo delle macro Rust in dettaglio nel Capitolo 19. Per ora, devi solo sapere che usando un ! significa che stai chiamando una macro invece di una normale funzione e che le macro non seguono sempre le stesse regole delle funzioni.
In terzo luogo, vediamo la stringa “Hello, world!”. Passiamo questa stringa come argomento a println!, e la stringa viene stampata sullo schermo.
In quarto luogo, terminiamo la riga con un punto e virgola (;), che indica che questa espressione è finita e che la successiva è pronta per iniziare. La maggior parte delle righe di codice Rust termina con un punto e virgola.
Compilazione ed Esecuzione Sono Passaggi Separati
Hai appena eseguito un programma appena creato, quindi esaminiamo ogni passaggio del processo.
Prima di eseguire un programma Rust, devi compilarlo utilizzando il compilatore Rust inserendo il comando rustc e passandogli il nome del tuo file sorgente, in questo modo:
bash
$ rustc main.rs
Se hai una formazione in C o C++, noterai che questo è simile a gcc o clang. Dopo aver compilato con successo, Rust genera un eseguibile binario.
Su Linux, macOS e PowerShell su Windows, puoi vedere l’eseguibile inserendo il comando ls nel tuo shell:
bash
$ ls
main main.rs
Su Linux e macOS, vedrai due file. Con PowerShell su Windows, vedrai gli stessi tre file che vedresti usando CMD. Con CMD su Windows, inseriresti il seguente:
bash
> dir /B %= l'opzione /B indica di mostrare solo i nomi dei file =%
main.exe
main.pdb
main.rs
Ciò mostra il file di codice sorgente con l’estensione .rs, il file eseguibile (main.exe su Windows, ma main su tutte le altre piattaforme), e, quando si utilizza Windows, un file contenente informazioni di debug con l’estensione .pdb. Da qui, esegui il file main o main.exe, in questo modo:
bash
$ ./main # o .\main.exe su Windows
Se il tuo main.rs è il tuo programma “Hello, world!”, questa riga stamperà Hello, world! sul tuo terminale.
Se sei più familiare con un linguaggio dinamico, come Ruby, Python o JavaScript, potresti non essere abituato a compilare ed eseguire un programma come passaggi separati. Rust è un linguaggio compilato ahead-of-time, il che significa che puoi compilare un programma e dare l’eseguibile a qualcun altro, e loro possono eseguirlo anche senza avere Rust installato. Se dai a qualcuno un file .rb, .py o .js, devono avere un’implementazione di Ruby, Python o JavaScript installata (rispettivamente). Ma in quei linguaggi, hai bisogno solo di un comando per compilare ed eseguire il tuo programma. Tutto è un compromesso nel design del linguaggio.
Compilare con solo rustc va bene per i programmi semplici, ma man mano che il tuo progetto cresce, vorrai gestire tutte le opzioni e rendere facile condividere il tuo codice. Ora, ti presenteremo lo strumento Cargo, che ti aiuterà a scrivere programmi Rust reali.