fn hello_world() {
// vec! est une macro qui crée un vecteur
let words = vec!["hello", "world", "!"];
for word in words {
println!("{} ", word); // encore une macro
}
}
Mais on ne trouve pas ce genre de Rust dans la nature. Ce qui manque dans cet exemple, c'est…
Tous un tas de nombres, signés, non signés, flottants : i32
, u8
, f64
.
Des String
s en UTF8, il va falloir revoir vos habitudes !
Collections:
Et vos propres types customs :
type mon_type_de_tableau_perso = [u16; 5];
Le type qui vous laisse choisir.
pub enum TypeDePokemon {
Herbe,
Feu,
Eau,
Vol,
Normal,
Poison,
Electrique,
}
Option<type>
Le type qui :
Some(valeur)
None
type EvolueEn = Option<String>;
Un Pokemon peut soit :
Some(String::from("Dracofeu"))
None
pub struct Pokemon {
id: u16,
nom: String,
niveau: u16,
evolue_en: EvolueEn,
pokemon_type: Vec<TypeDePokemon>,
}
let bulbizarre = Pokemon {
id: 1,
nom: String::from("Bulbizarre"),
niveau: 1,
evolue_en: Some(String::from("Herbizarre")),
pokemon_type: vec![
TypeDePokemon::Herbe,
TypeDePokemon::Poison
],
};
impl Pokemon {
fn next_level(&mut self) {
println!("{} passe au niveau suivant !", self.nom);
self.niveau += 1;
}
}
Ça ressemble à de l'orienté objet, mais : pas d'héritage en rust !
En | le modèle est | On écrit d'abord… | et ensuite… |
---|---|---|---|
Orienté Objet, | top-down. | les classes mères, | les classes filles. |
Rust, | bottom-up. | le format de la donnée, | les structs. |
Par contre, on a plein d'interfaces en Rust (on appelle ça des traits).
Try/catch, throw… en Rust on a mieux que ça.
enum Result {
Ok(valeur),
Err(erreur),
}
Inclus dans l'offre :
3 règles absolues :
T
en a l'ownership — plus personne d'autre ne peut y toucher.&T
peut être utilisée par plein de fonctions à la fois&mut T
ne peut être utilisée que par une seule fonction à la foisBig up à Benjamin Coenen qui a fait une super conf à Devoxx 2021 à ce sujet.
À force de cogner sur le clavier ça va passer.
ripgrep
: remplace grep
(plus convivial)bat
: remplace cat
(coloration)sd
: remplace sed
fd
: remplace find
dust
: remplace du
(c'est beaucoup plus joli)En Rust ça va plus vite.
Deno, runtime JavaScript et Typescript.
Sōzu, reverse proxy fait sur mesure pour Clever Cloud.
Écrit par Geoffroy Couprie, aka Geal.
Le Rust book a été largement traduit en français!
Udemy, Exercism, etc.
Les questions de noobs sont bienvenues sur le forum de la communauté (en anglais)
Stack Overflow pour les puristes.
Écrivez-moi ! emmanuel.bosquet@clever-cloud.com
Et maintenant lees questions !