Rust 1.86 añade la capacidad de trait upcasting

La última actualización de Rust 1.86, anunciada el 3 de abril de 2025, trae consigo una nueva característica esperada por muchos: trait upcasting.

Esta mejora permite realizar el upcasting de objetos de trait, lo cual es útil cuando un trait tiene un supertrait.

¿Qué es el Trait Upcasting?

El trait upcasting permite que, si un trait tiene un supertrait, los desarrolladores puedan convertir (o «coaccionar») una referencia a un objeto de trait en una referencia a un objeto de trait de su supertrait.

Esta característica proporciona más flexibilidad en cómo se manejan los objetos de trait, especialmente cuando se usa el trait Any, permitiendo la conversión a dyn Any para invocar métodos como downcast sin necesidad de añadir métodos adicionales o usar crates externos.

Otras Novedades de Rust 1.86

Además del trait upcasting, Rust 1.86 incluye varias mejoras y cambios importantes:

  1. Soporte para indexación mutable múltiple en HashMap y slices: Ahora puedes obtener múltiples referencias mutables a elementos simultáneamente de un HashMap o slice, gracias a la nueva función get_disjoint_mut.

  2. Asertaciones de depuración: El compilador de Rust ahora inserta automáticamente aserciones de depuración para garantizar que los punteros no sean nulos cuando se lean o escriban tamaños no nulos, o cuando se vuelven a tomar como referencias.

  3. Características estables:

    • target_feature_11: Ahora se pueden marcar funciones seguras con el atributo #[target_feature].
    • get_disjoint_mut y get_disjoint_unchecked_mut en slices y HashMap.
    • NonZero::count_ones y otras funciones y métodos estabilizados.
  4. Advertencia por omisión del ABI en bloques extern: Si omites el ABI en bloques extern o funciones (extern fn), ahora obtendrás una advertencia gracias a la nueva regla missing_abi lint.

  5. Eliminación del soporte para i586-pc-windows-msvc: Este target de segunda categoría será eliminado en Rust 1.87.

Nuevas APIs Estabilizadas en Rust 1.86

  • Métodos de {float} como next_down y next_up.
  • Nuevas funciones de HashMap y Vec como pop_if.
  • Métodos relacionados con sync::Once y sync::OnceLock.
  • Funciones útiles como hint::black_box y varias funciones para manipular cadenas y cursores de I/O en contextos constantes.

Conclusión

Rust 1.86 continúa mejorando con características como trait upcasting y otras optimizaciones y funciones estables, lo que aumenta su flexibilidad y eficiencia.

Estas actualizaciones hacen que Rust sea aún más potente para el desarrollo de software seguro y de alto rendimiento.

Si estás utilizando una versión anterior, puedes actualizar fácilmente con rustup update stable para aprovechar estas mejoras.


Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario