Módulos, pruebas y macros
12 pasos en 5 series de Rust.
Lo que rodea al código. Módulos y visibilidad, los atributos de prueba y los doc tests que hacen que las herramientas de Rust sean inusualmente buenas, y macro_rules para cuando una función no alcanza.
La última serie es diseño de API: builders, newtypes y los patrones que hacen que un crate sea agradable de usar desde afuera. Doce pasos, sobre todo acerca de la diferencia entre código que funciona y código del que alguien más puede depender.
Módulos y visibilidad
- MódulosUn árbol de módulos en un solo archivo: mod declara, pub abre, las rutas entran.
- use, as y reexportacionesTraer nombres al alcance, renombrar choques y reexportar una API.
- Visibilidadpub(crate) y los campos privados son cómo un módulo cuida sus invariantes.
Pruebas y documentación
- Pruebas unitariasLas pruebas viven junto al código en un módulo cfg(test), compiladas solo al probar.
- Probar errores y panicsLas pruebas pueden devolver Result, y should_panic afirma la falla que esperas.
- Comentarios de documentación/// documenta el ítem que sigue, y el ejemplo que contiene es una prueba que corre.
Macros
- Macros deriveLos derives que vale la pena usar, y qué te compra cada uno.
- macro_rules!Una macro declarativa coincide patrones de sintaxis y se expande a código.
- Macros con repeticiónLa repetición captura una lista, así que una macro arma una colección entera.
Patrones de API
- El patrón builderSetters encadenados para un tipo con muchos campos opcionales, cerrando con build.
- Los newtypes sostienen invariantesEnvuelve un primitivo para que un valor inválido no pueda construirse en absoluto.
Bis
- inventory.rsUn pequeño árbol de módulos con un builder, invariantes privados y sus propias pruebas.