Cargo ou comment étendre le tooling Rust à l'infini !

Anthony Pena - https://k49.fr.nf

Un peu d'histoire

2006 : Création de Rust

2009 : Mozilla s'intéresse à Rust

2010 : Mozilla annonce au Rust

2010 : Rust devient auto-hébergé

2015 : version 1.0.0 de Rust

2021 : ouverture de la Rust Foundation

Rustaceans (like Crustacean but with some Rust)

Rust un langage moderne

Performant

Fiable

Productif

Hello, world!

mais aussi...

if foo == "SFEIR" {
    // do something
}

for i in 0..10 {
    // do something
}
const check: u8 = if foo == "SFEIR" {
    1
} else {
    0
};

type City = String;
type Year = u16;

enum Conf {
    Devfest(City, Year),
    Devoxx(Year),
    None,
}


fn match_conf(conf: Conf) -> String {
    match conf {
        Devfest(city, year) => format!("Devfest {} {}", city, year),
        Devoxx(year @ 2020..) => format!("Devoxx {}", year),
        Devoxx(year) => format!("Devoxx {}", year),
        None => format!("-")
    }
}

Et encore beaucoup d'autres points...

Tooling

Rustup

rustup toolchain install stable # installer une toolchain
rustup update                   # la mettre à jour
rustup default nightly          # changer de toolchain

Cargo

cargo init

cargo add (1.62) + cargo install + cargo update

cargo package + cargo publish

cargo run

cargo test

pour faire des tests de perfs cargo bench

cargo build

pour aller en prod cargo build --release --locked

cargo fmt

cargo clippy

cargo fix

cargo hello ?

Conclusion

Anthony Pena

Développeur Web Fullstack @ center

@_Anthony_Pena_

@kuroidoruido

@penaanthony

https://k49.fr.nf

https://github.com/kuroidoruido/talks

Crédit photos

https://pixabay.com/photos/highway-traffic-long-exposure-393492/

- Rust a été créé par une personne seule (Graydon Hoare)

- Mozilla (employeur de Graydon Hoare) s'y intéresse - et commence à travailler sur le langage

- Mozilla révèle Rust en 2010

- le compilateur écrit en OCaml est abandonné pour un compilateur écrit en Rust

- Aujourd'hui on est en version 1.62.0

- Depuis février 2021, le langage est porté par la Fondation Rust (fondé par AWS, Huawei, Google, Microsoft et Mozilla)

- La mascotte s'appelle Ferris - C'est un crustacés (en anglais Crustacean) - les gens qui font du Rust s'appelle donc les Rustaceans

- rapide et efficace en mémoire - pas de runtime ou de garbage collector - efficace en consommation de ressources - peut être utilisé en embarqué

- système de type riche - ownership et le modèle de partage mémoire et thread - le tout à la compilation

- bonne documentation - message d'erreur compréhensible et bien détaillé et qui pointe vers la doc - outillage assez complet de base - intégration IDE

- moins de parenthèses ! - range en natif

les structures de controles sont expressions

- type alias - enum = ADT / algebraic data types - struct

- match remplace le switch - est aussi expression comme le if - return automatic sur la dernière instruction

- nvm / sdkman => rustup - pour setup et gérer sa toolchain rust sans prise de tête

linter

Pour les plus feinéant : un fix auto des warnings

- Rust est un super langage - c'est pas simple au début mais le compilateur aide beaucoup - même si il est un peu comme Retsuko : il râle très fort, il doit nous haïr profondément mais il semble gentil en nous expliquant les choses - le tooling est top - la doc est top aussi