Skip to content

Instantly share code, notes, and snippets.

@NerOcrO
Last active February 19, 2024 09:14
Show Gist options
  • Save NerOcrO/a2e692a3f926d7f97303132c796ad060 to your computer and use it in GitHub Desktop.
Save NerOcrO/a2e692a3f926d7f97303132c796ad060 to your computer and use it in GitHub Desktop.
rust
  • 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 avec build)
  • 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 mutable
    • let 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 de std::io:stdin()...
  • condition ternaire
    • let a = if age == 19 {true} else {false};
  • boucle infinie avec loop
    • break pour en sortir
    • continue pour continuer
  • Rust n'a pas d'exception. À la place, il a les types Result
    • on peut catcher avec .unwrap() qui donne le Ok() sinon l'Err
    • on peut catcher avec .expect('message') qui est pareil que unwrap mais qui affiche le message précisé
  • Rust n'a pas de garbage collector donc c'est à nous de gérer la mémoire
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment