2 minutes
Aide mémoire pour printer en Rust
Le print simple/ courant
println!("{}, l'origine", 42);
Print avec des arguments positionnels
println!("Hi {0}, I am {1}. Hi {1}, I am {0}", "John", "Peter");
Print avec des arguments nommés
println!("{argument1} {argument2} {argument3}",
argument2="fifi",
argument1="riri",
argument3="loulou"
);
Printer en alignant la variable à afficher à droite
println!("{ma_variable:>width$}", ma_variable="toto", width=10);
Printer en alignant à droite et en préfixant avec des zéros
println!("{nombre:0>width$}", nombre=100, width=6);
Printer avec une conversion automatique en binaire
println!("{} en binaire s'écrit {:b}", 4, 4);
Printer une structure
#[derive(Debug)]
struct Voiture {
modele: String,
marque: String
}
let modele = "508 GT".to_string();
let marque = "Peugeot".to_string();
let voiture = Voiture {modele, marque};
println!("{:?}", voiture);
Addition dans un print
println!("1 + 2 = {}", 1 + 2);
//println!("1 + 2 = {}", 1i32 + 2);
//println!("1 + 2 = {}", 1u32 + 2);
Soustraction dans un print
println!("1 - 2 = {}", 1 - 2);
//println!("1 - 2 = {}", 1i32 - 2);
// Attention aux overflows
println!("1 - 2 = {}", 1u32 - 2);
^^^^^^^^ attempt to compute `1_u32 - 2_u32`, which would overflow
this arithmetic operation will overflow
Algèbre de Boole dans un print
println!("vrai ET faux = {}", true && false);
println!("vrai OU faux = {}", true || false);
println!("NON vrai = {}", !true);
Opérations binaires
println!("01001 ET 00111 = {:05b}", 0b01001u32 & 0b00111);
//01001 ET 00111 = 00001
println!("01001 OU 00111 = {:05b}", 0b01001u32 | 0b00111);
//01001 OU 00111 = 01111
println!("01001 XOR 00111 = {:05b}", 0b01001u32 ^ 0b00111);
//01001 XOR 00111 = 01110
// Décalage
println!("1 << 4 = {}", 1u32 << 4);
// 16
println!("0x80 >> 1 = 0x{:x}", 0x80u32 >> 1);
// 0x80 >> 1 = 0x40
Manière plus lisible d’écrire des nombres
println!("1 milliard peut s'écrire {}", 1_000_000_000u32);