L’ecosistema di Rust

L’ecosistema Rust è costituito da una serie di strumenti, di cui i principali sono:

  • rustc: il compilatore Rust che trasforma i file .rs in binari e altri formati intermedi.

  • cargo: the Rust dependency manager and build tool. Cargo knows how to download dependencies, usually hosted on https://crates.io, and it will pass them to rustc when building your project. Cargo also comes with a built-in test runner which is used to execute unit tests.

  • rustup: the Rust toolchain installer and updater. This tool is used to install and update rustc and cargo when new versions of Rust are released. In addition, rustup can also download documentation for the standard library. You can have multiple versions of Rust installed at once and rustup will let you switch between them as needed.

Punti chiave:

  • Rust ha un programma di rilascio rapido con una nuova versione in uscita ogni sei settimane. Le nuove versioni mantengono la retrocompatibilità con vecchie versioni — in più abilitano nuove funzionalità.

  • Esistono tre canali di rilascio: “stable”, “beta” e “nightly”.

  • Le nuove funzionalità vengono testate su “nightly”, “beta” è ciò che diventa “stabile” ogni sei settimane.

  • Dependencies can also be resolved from alternative registries, git, folders, and more.

  • Rust ha anche le [edizioni]: l’edizione attuale è Rust 2021. Le precedenti edizioni erano Rust 2015 e Rust 2018.

    • Le edizioni possono apportare modifiche incompatibili con le versioni precedenti del linguaggio.

    • Per evitare incompatibilità del codice, le edizioni sono opt-in: si può selezionare l’edizione di riferimento’ attraverso il file Cargo.toml.

    • Per evitare di dividere l’ecosistema, i compilatori di Rust possono mescolare il codice scritto per diverse edizioni.

    • Nota che è abbastanza raro usare il compilatore direttamente non attraverso cargo (la maggior parte degli utenti non lo fa mai).

    • It might be worth alluding that Cargo itself is an extremely powerful and comprehensive tool. It is capable of many advanced features including but not limited to:

      • Struttura del progetto/pacchetto
      • [aree di lavoro]
      • Dipendenze di sviluppo e gestione/memorizzazione nella cache delle dipendenze di runtime
      • [costruzione script]
      • [installazione globale]
      • È anche estensibile con plug-in di comandi secondari (come cargo clippy).
    • Leggi di più dall’official Cargo Book