Cómo implementar argumentos nombrados en Rust sin nuevas características

Fuentes: Implementing Named Arguments in Rust Without New Language Features

El artículo técnico analiza cómo replicar la ergonomía de los argumentos nombrados en Rust utilizando su sistema de tipos existente, evitando la adición de nuevas características de lenguaje. El autor argumenta que, aunque Rust no ofrece sintaxis nativa para argumentos nombrados como Python o Kotlin, los structs permiten lograr el 80% de la funcionalidad deseada de manera elegante y segura.

La propuesta central es tratar los argumentos como parte del dominio semántico del código. En lugar de definir una nueva sintaxis de llamada, se utilizan structs para agrupar parámetros relacionados, como en la función de recorte de imágenes. Esto elimina la ambigüedad de la ordenación de parámetros y permite el uso de punteros a funciones, ya que los nombres pertenecen al tipo y no a la convención de llamada. Además, la evaluación de expresiones ocurre en el orden en que se escriben, resolviendo problemas de orden de ejecución sin reglas adicionales.

Para los argumentos opcionales, el texto recomienda usar tipos Option dentro de structs de configuración, en lugar de listas de parámetros con valores nulos. Esto evita la confusión entre argumentos y opciones y permite una composición más clara. Finalmente, se propone el uso de la sintaxis de actualización de structs junto con el trait Default para manejar valores por defecto, manteniendo la claridad del código y la compatibilidad con las APIs de librerías. Este enfoque prioriza la seguridad y la tipificación sobre la sintaxis adicional, ofreciendo una alternativa robusta para el desarrollo de software en Rust.