- Installation
- Documentation
- Projet open source
- what-is-rust-and-why-is-it-so-popular
- rustup est l'équivalent de nvm
cargoéquivaut àyarncargo new [DIRECTORY] --binCargo.tomléquivaut àpackage.json
- pour compiler
rustc src/main.rs
- pour builder
cargo build
- 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 versionCargo.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é
mutpour 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:stdinstdin()...au lieu destd::io:stdin()...
- condition ternaire
let a = if age == 19 {true} else {false};
- boucle infinie avec
loopbreakpour en sortircontinuepour 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 queunwrapmais 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