- Installation
- Documentation
- Projet open source
- what-is-rust-and-why-is-it-so-popular
cargo
équivaut àyarn
cargo new [DIRECTORY] --bin
Cargo.toml
équivaut àpackage.json
- pour compiler
rustc src/main.rs
- pour checker les erreurs de compilation
cargo check
- lancer l'application
cargo run
(mode debug, pas optimisé mais rapide à compiler)cargo run --release
(mode final ultra optimisé mais plus long à compiler, fonctionne aussi avecbuild
)
crate
= un package / une dépendence
[dependencies]
postgres = "0.14.0"
rand = "*" -> prend la dernière version
Cargo.lock
équivaut àyarn.lock
- https://docs.rs/ équivaut à npm
- commentaire :
//
et/* */
- toutes les "variables" sont immutables par défaut, il faut rajouter le mot clé
mut
pour la rendre mutablelet age = 42;
let mut age = 42;
- une constante qui n'est pas utilisée
_maConstante
let age = 1_000.567_098;
est valide et plus lisible- shadowing : ça recré une autre constante du même nom et la première n'existe plus
let age = 42;
let age = age + 1;
- différence d'écriture entre un caractère et une chaîne de caractères
let a = 'a';
let b = "du texte";
- tuple : ne peut pas s'agrandir ou rétrécir
let a = ('a', 1, "toto");
let b = a.0; // -> 'a'
- destructuration
let a = ('a', 1, "toto");
let (b, c, d) = a;
- tableau : je ne peux pas mélanger les types à l'intérieur et ne peut pas s'agrandir ou rétrécir
let a = ['a', '1', 't'];
let b = a[0];
let a = ['a';4]; // répète la valeur 'a' quatre fois
println!()
est une macro- on affiche les string avec des ""
- la fonction main est un mot clé que Rust connait et lance par défaut quand on appelle le fichier la contenant
- Importer des chemins dans la portée : simplifie l'écriture
use std::io:stdin
stdin()...
au lieu destd::io:stdin()...
- condition ternaire
let a = if age == 19 {true} else {false};
- boucle infinie avec
loop
break
pour en sortircontinue
pour continuer
- Rust n'a pas d'exception. À la place, il a les types
Result
- on peut catcher avec
.unwrap()
qui donne leOk()
sinon l'Err
- on peut catcher avec
.expect('message')
qui est pareil queunwrap
mais qui affiche le message précisé
- on peut catcher avec
- Rust n'a pas de garbage collector donc c'est à nous de gérer la mémoire