Sortie de Rust 1.35
mar, 28/05/2019 - 15:48
L'équipe du langage Rust annonce la disponibilité de la version 1.35. Rust est un langage de programmation qui permet à chacun de concevoir des logiciels fiables et efficaces, souligne pour l'occasion l'équipe dans le billet annonçant cette disponibilité.
Les deux principales nouveautés mises en avant sont que :
1/ Les traits FnOnce, FnMut, et Fn sont désormais implémentés pour Box<FnOnce>, Box<FnMut> et Box<Fn> respectivement.
2/ Depuis Rust 1.19.0, il est possible de contraindre les fermetures (closures) dans des pointeurs de fonction. Par exemple :
fn twice(x: u8, f: fn(u8) -> u8) -> u8 {
f(f(x))
}
fn main() {
assert_eq!(42, twice(0, |x| x + 21));
}
Mais ceci n'était pas applicable aux pointeurs de fonction unsafe. Avec Rust 1.35, ça le devient :
unsafe fn call_unsafe_fn_ptr(f: unsafe fn()) {
f()
}
fn main() {
unsafe {
call_unsafe_fn_ptr(|| {
dbg!();
});
}
}
A remarquer encore, la macro dbg! qui est apparue avec Rust 1.32 peut désormais être utilisée sans argument.
Exemple d'utilisation classique :
fn main() {
let mut x = 0;
if dbg!(x == 1) {
x += 1;
}
dbg!(x);
}
affiche
[src/main.rs:4] x == 1 = false
[src/main.rs:8] x = 0
Utilisée sans argument dbg! permet de tracer le flux d'exécution de l'application. Par exemple :
fn main() {
let condition = true;
if condition {
dbg!();
}
}
affiche
[src/main.rs:5]
A noter enfin la stabilisation d'un grand nombre d'API.
Rust est un logiciel libre disponible sur GitHub. Cette page du projet récapitule toutes les nouveautés de Rust 1.35.