Ajouter un commentaire

Sortie de Rust 1.35

Par:
fredericmazue

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.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 PPPP   L     DDD   H  H  DDD  
P P L D D H H D D
PPPP L D D HHHH D D
P L D D H H D D
P LLLL DDD H H DDD