Rust 1.67

Par:
fredericmazue

jeu, 02/02/2023 - 14:03

Mozilla a annoncé la disponibilité de Rust 1.67. la nouveau principale de cette version sont les améliorations apportées à l'annotation #[must_use].

Ainsi les fonctions async annotés avec #[must_use] appliquent cet attribut à la sortie du impl Future retourné. Le trait Future est lui-même annoté avec #[must_use] ce qui fait que tous les types qui implémentent Future sont de fait #[must_use]. Auparavant, il n'y avait aucun moyen d'indiquer que la sortie de Future est elle-même significative et devrait être utilisée d'une manière ou d'une autre.

En outre, avec Rust 1.67, le compilateur avertira désormais si la sortie n'est pas utilisée d'une manière ou d'une autre.

#[must_use]
async fn bar() -> u32 { 0 }

async fn caller() {
    bar().await;
}

warning: unused output of future returned by `bar` that must be used
--> src/lib.rs:5:5
  |
5 |     bar().await;
  |     ^^^^^^^^^^^
  |
  = note: `#[warn(unused_must_use)]` on by default