Retrouvez la présentation en ligne.
Rust c'est génial, on va voir pourquoi.
Installez rust en suivant ces instructions, résumables ainsi :
C'est l'installeur et gestionnaire de version de rust.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Mettez rustup à jour si ça fait un moment que vous avez installé rust
rustup update
Rustup vérifiera que vous avez la dernière version des outils nécessaire, surtout cargo, qui est le gestionnaire de paquets de rust, et wrappe rustc
, le compilateur, entre autres choses.
cargo --version
Dans ce dépôt, il y a :
- Un hello world parce que c'est la vie
- Une lib Pokémon, qui modélise des pokémons, peut les créer, les transformer, les sérialiser
- Trois examples de désérialisation d'un
pokemons.json
pour illustrerResult
Clonez ce dépot:
git clone https://github.com/keksoj/introduction_a_rust.git
cd introduction_a_rust
Vérifier que cargo fonctionne en lançant :
cargo run
qui devrait afficher "Hello, world!"
Pour afficher la documentation du code de ce projet, faites
cargo doc --open
Lancer les tests
cargo test
Lisez un peu src/bin/bulbizarre.rs
, bidouillez-le, puis lancez-le avec :
cargo run --bin bulbizarre
Les trois exemples font exactement la même chose : désérialiser pokemons.json
pour en faire un vecteur d'instances du struct Pokemon
.
Pourquoi trois fois la même chose ? C'est pour montrer comment on utilise Result
en Rust, du plus verbose et facile à comprendre, au plus efficace une fois qu'on a compris.
Un exemple se lance comme ça :
cargo run --example result
Je vous suggère de lire les exemples dans cet ordre :
result.rs
qui décortiqueResult
dans une gestion d'erreur ultra-verbose mais même les collégiens qui écrivent en scratch pourront comprendre.custom_error.rs
montre comment on peut inventer son propre type d'erreur custom, et comment utiliser du sucre syntaxique avec?
pour propager les erreurs.anyhow_error.rs
montre comment les feignants blasés dans mon genre gèrent des erreurs en rust.
Lancer la génération de la présentation avec marpit
marp -w presentation.md -o index.html