# Rust 1.94.0: estabilización de array_windows, clave include en configuraciones y transición a TOML 1.1
Rust 1.94.0 ha sido lanzada, trayendo varias mejoras significativas para los desarrolladores. Las principales nuevas características incluyen el método array_windows para iterar sobre arrays de longitud fija, soporte para la clave include en archivos de configuración de Cargo y el cambio a TOML 1.1. Así es como estos cambios simplificarán tu trabajo.
El método array_windows: Trabajando con ventanas de longitud fija
En la nueva versión de Rust, el método array_windows para slices ha sido estabilizado. Permite iterar sobre un slice con ventanas de longitud fija, eliminando la necesidad de indexación manual y verificación de límites. A diferencia del método windows, que devuelve slices de longitud dinámica (&[T]), array_windows devuelve referencias a arrays de longitud fija (&[T; N]).
Esto es especialmente útil en tareas donde necesitas procesar elementos consecutivos con un tamaño de ventana conocido. Por ejemplo, para encontrar el patrón ABBA (dos letras diferentes seguidas de su orden inverso) en una cadena, puedes usar el siguiente código:
fn has_abba(s: &str) -> bool {
s.as_bytes()
.array_windows()
.any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}
El compilador infiere automáticamente la longitud de la ventana (4) del patrón de desestructuración en el cierre. Con windows(4), tendrías que verificar manualmente los índices, lo que es menos seguro y legible.
Gestión de la configuración de Cargo con la clave include
Cargo ahora soporta la clave include en archivos de configuración (.cargo/config.toml). Esta característica simplifica la organización, compartición y gestión de configuraciones entre proyectos y entornos.
La clave include puede ser un array de rutas o una tabla en línea con opciones adicionales. Por ejemplo:
# Array de rutas
include = [
"frodo.toml",
"samwise.toml",
]
# Tablas en línea para ajustes finos
include = [
{ path = "required.toml" },
{ path = "optional.toml", optional = true },
]
La opción optional = true permite indicar que un archivo puede estar ausente en algunos entornos (por ejemplo, en la máquina local de un desarrollador). Esto aumenta la flexibilidad de la configuración sin necesidad de ramas separadas.
Cambio a TOML 1.1: ¿Qué ha cambiado?
Cargo ahora soporta completamente TOML 1.1 para manifiestos y archivos de configuración. Esto incluye varias mejoras convenientes:
- Posibilidad de extender tablas en línea a través de múltiples líneas con comas finales.
- Nuevas secuencias de escape para cadenas:
\xHHy\e. - Segundos opcionales en representaciones de tiempo (por defecto: 0).
Ejemplo de una tabla en línea multilínea:
serde = {
version = "1.0",
features = ["derive"],
}
Nota: Usar nuevas características de TOML 1.1 en Cargo.toml eleva la versión mínima de Rust soportada (MSRV) a una que requiera el nuevo analizador de Cargo. Sin embargo, al publicar un crate, Cargo reescribe automáticamente el manifiesto a un formato compatible con analizadores antiguos. Esto te permite mantener soporte para versiones anteriores de Rust para los usuarios de tu crate.
APIs estabilizadas: Lista completa
La versión 1.94.0 estabiliza muchas APIs que estaban previamente en desarrollo. Aquí las principales:
- Métodos de slice:
<[T]>::array_windows,<[T]>::element_offset - Métodos de
LazyCell:get,get_mut,force_mut - Métodos de
LazyLock:get,get_mut,force_mut - Conversión:
impl TryFrom<char> for usize - Métodos de
Peekable:next_if_map,next_if_map_mut - Funciones intrínsecas para x86 (AVX-512 FP16) y AArch64 (NEON FP16), excepto aquellas que dependen del tipo inestable
f16 - Constantes matemáticas:
f32::consts::EULER_GAMMA,f64::consts::EULER_GAMMA,f32::consts::GOLDEN_RATIO,f64::consts::GOLDEN_RATIO - Los métodos
f32::mul_addyf64::mul_addahora son estables en contextosconst
Estos cambios amplían las capacidades de la biblioteca estándar y hacen el código más expresivo.
Puntos clave para desarrolladores
- Manejo simplificado de ventanas: El método
array_windowsreduce el código repetitivo al trabajar con ventanas fijas, mejorando la seguridad y legibilidad. - Flexibilidad en configuraciones: La clave
includeen Cargo permite ensamblar configuraciones modulares, lo que es especialmente útil para proyectos grandes y equipos. - Compatibilidad con TOML 1.1: Las nuevas características de TOML hacen los archivos de configuración más cómodos, pero ten en cuenta el MSRV al usarlas en
Cargo.toml. - Expansión de la biblioteca estándar: Estabilizar nuevas APIs —incluidas constantes matemáticas y métodos de iteradores— simplifica tareas cotidianas.
Se recomienda actualizar a Rust 1.94.0 a todos los desarrolladores para aprovechar estas mejoras. Usa el comando rustup update stable para instalarla.
— Editorial Team
Aún no hay comentarios.