Retour à l'accueil

Rust 1.94.0 : Nouvelles méthodes et configuration Cargo | Revue IT

La sortie Rust 1.94.0 inclut la stabilisation de la méthode array_windows pour le traitement de fenêtres de longueur fixe, le support de la clé include dans les fichiers de configuration Cargo et la transition vers TOML 1.1. Ces changements simplifient l'écriture de code sûr et lisible, ainsi que la configuration flexible du projet. Mise à jour recommandée pour tous les développeurs Rust.

Rust 1.94.0 : Comment les nouvelles fonctionnalités amélioreront votre code ? Détails de la sortie
Advertisement 728x90

# Rust 1.94.0 : stabilisation de array_windows, clé include dans les configs, et passage à TOML 1.1

Rust 1.94.0 vient de sortir, apportant plusieurs améliorations significatives pour les développeurs. Les principales nouvelles fonctionnalités incluent la méthode array_windows pour itérer sur des tableaux de longueur fixe, le support de la clé include dans les fichiers de configuration Cargo, et le passage à TOML 1.1. Voici comment ces changements simplifieront votre travail.

La méthode array_windows : travailler avec des fenêtres de longueur fixe

Dans la nouvelle version de Rust, la méthode array_windows pour les slices a été stabilisée. Elle permet d'itérer sur une slice avec des fenêtres de longueur fixe, éliminant le besoin d'indexation manuelle et de vérification des bornes. Contrairement à la méthode windows, qui retourne des slices de longueur dynamique (&[T]), array_windows retourne des références vers des tableaux de longueur fixe (&[T; N]).

Ceci est particulièrement utile dans les tâches où vous devez traiter des éléments consécutifs avec une taille de fenêtre connue. Par exemple, pour trouver le motif ABBA (deux lettres différentes suivies de leur ordre inversé) dans une chaîne, vous pouvez utiliser le code suivant :

Google AdInline article slot
fn has_abba(s: &str) -> bool {
    s.as_bytes()
        .array_windows()
        .any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}

Le compilateur infère automatiquement la longueur de la fenêtre (4) à partir du motif de destructuration dans la closure. Avec windows(4), vous devriez vérifier manuellement les indices, ce qui est moins sûr et lisible.

Gestion de la configuration Cargo avec la clé include

Cargo supporte désormais la clé include dans les fichiers de configuration (.cargo/config.toml). Cette fonctionnalité simplifie l'organisation, le partage et la gestion des configurations entre projets et environnements.

La clé include peut être un tableau de chemins ou un tableau inline avec des options supplémentaires. Par exemple :

Google AdInline article slot
# Array of paths
include = [
    "frodo.toml",
    "samwise.toml",
]

# Inline tables for fine-tuning
include = [
    { path = "required.toml" },
    { path = "optional.toml", optional = true },
]

L'option optional = true permet de spécifier qu'un fichier peut être absent dans certains environnements (par ex., sur la machine locale d'un développeur). Cela augmente la flexibilité de la configuration sans besoin de branches séparées.

Passage à TOML 1.1 : Qu'est-ce qui change

Cargo supporte désormais pleinement TOML 1.1 pour les manifests et fichiers de configuration. Cela inclut plusieurs améliorations pratiques :

  • Possibilité d'étendre les tableaux inline sur plusieurs lignes avec des virgules traînantes.
  • Nouvelles séquences d'échappement pour les chaînes : \xHH et \e.
  • Secondes optionnelles dans les représentations de temps (par défaut : 0).

Exemple de tableau inline multiligne :

Google AdInline article slot
serde = {
    version = "1.0",
    features = ["derive"],
}

Note : L'utilisation des nouvelles fonctionnalités de TOML 1.1 dans Cargo.toml élève la version minimale de Rust supportée (MSRV) à celle nécessitant le nouveau parseur Cargo. Cependant, lors de la publication d'une crate, Cargo réécrit automatiquement le manifest dans un format compatible avec les parseurs plus anciens. Cela vous permet de maintenir le support des versions antérieures de Rust pour les utilisateurs de votre crate.

APIs stabilisées : Liste complète

La version 1.94.0 stabilise de nombreuses APIs qui étaient auparavant en développement. Voici les principales :

  • Méthodes des slices : <[T]>::array_windows, <[T]>::element_offset
  • Méthodes de LazyCell : get, get_mut, force_mut
  • Méthodes de LazyLock : get, get_mut, force_mut
  • Conversion : impl TryFrom<char> for usize
  • Méthodes de Peekable : next_if_map, next_if_map_mut
  • Fonctions intrinsèques pour x86 (AVX-512 FP16) et AArch64 (NEON FP16), sauf celles dépendant du type instable f16
  • Constantes mathématiques : f32::consts::EULER_GAMMA, f64::consts::EULER_GAMMA, f32::consts::GOLDEN_RATIO, f64::consts::GOLDEN_RATIO
  • Méthodes f32::mul_add et f64::mul_add désormais stables en contextes const

Ces changements étendent les capacités de la bibliothèque standard et rendent le code plus expressif.

Points clés pour les développeurs

  • Gestion simplifiée des fenêtres : La méthode array_windows réduit le code boilerplate lors du travail avec des fenêtres fixes, améliorant la sécurité et la lisibilité.
  • Flexibilité de configuration : La clé include dans Cargo permet un assemblage modulaire des configs, particulièrement utile pour les gros projets et les équipes.
  • Compatibilité TOML 1.1 : Les nouvelles fonctionnalités TOML rendent les fichiers de configuration plus pratiques, mais gardez MSRV à l'esprit lors de leur utilisation dans Cargo.toml.
  • Extension de la bibliothèque standard : La stabilisation de nouvelles APIs — incluant les constantes mathématiques et méthodes d'itérateurs — simplifie les tâches quotidiennes.

Mettre à jour vers Rust 1.94.0 est recommandé pour tous les développeurs afin de profiter de ces améliorations. Utilisez la commande rustup update stable pour l'installer.

— Editorial Team

Advertisement 728x90

Lire ensuite