Saltar al contenido
Framework Ecosystems LabsUn contrato, muchos ecosistemas, la misma prueba.

🚀 Rocket — 2016#

⬅️ Atlas · 🦀 Ecosistema Rust · 🗂️ Índice

Rocket apuesta por la ergonomía: escribir un servicio en Rust con la brevedad de un framework de lenguaje dinámico. Lo consigue con macros, y esa decisión trae un coste muy concreto que merece explicarse.

Aparición 2016, creado por Sergio Benitez
Clasificación web-framework
Ecosistema Rust
Licencia MIT
Estado 🟢 Activo
Documentación https://rocket.rs/guide/

💡 Rutas declarativas#

#[post("/tasks", data = "<entrada>")]
fn crear(entrada: Json<CrearTarea>) -> Created<Json<Tarea>> { /* ... */ }

La anotación declara verbo, ruta y de dónde sale el cuerpo. Es la brevedad de Sinatra o Flask en un lenguaje de tipos estáticos, y el compilador comprueba que todo encaje.

⚖️ El coste de las macros#

Una macro genera código antes de compilar. Cuando algo no encaja, el error del compilador se refiere al código generado, no al que escribiste. En Rust, cuyos mensajes de error son largos incluso en el caso simple, eso puede convertir un fallo trivial en una sesión de investigación.

Es el mismo compromiso que el módulo 02 enuncia para las convenciones: cuanto más implícito, mejor debe ser el diagnóstico. Las macros son magia en tiempo de compilación, y su diagnóstico depende de cuánto esfuerzo ponga el proyecto en traducir el error de vuelta [klabnik-nichols-rust].

🧭 Las tres opciones de Rust, comparadas#

Rocket axum Actix Web
Prioriza Ergonomía Composición Rendimiento y madurez
Mecanismo Macros Genéricos y Tower Actores y su propio middleware
Coste característico Errores del compilador difíciles Curva de genéricos Middleware no reutilizable

Ninguna gana: son tres puntos distintos del mismo eje entre comodidad y control, que es el eje que recorre todo este Atlas.

🎓 Las dos lecciones#

1. La ergonomía se compra con generación de código, y se paga en diagnóstico. Vale la pena cuando el proyecto invierte en traducir bien los errores.

2. Tres frameworks del mismo lenguaje pueden diferir en filosofía más que en capacidad. Comparar por funcionalidades aquí no distingue nada; comparar por compromiso, sí.

🔗 Enlaces#

Fuentes#