# 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 :
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 :
# 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 :
\xHHet\e. - Secondes optionnelles dans les représentations de temps (par défaut : 0).
Exemple de tableau inline multiligne :
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_addetf64::mul_adddésormais stables en contextesconst
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_windowsré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é
includedans 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
Aucun commentaire pour le moment.