Featured image of post Primeros pasos con el desarrollo web en RustFeatured image of post Primeros pasos con el desarrollo web en Rust

Primeros pasos con el desarrollo web en Rust

Conocimientos esenciales para comenzar el desarrollo web con Rust. Una mirada a las consideraciones de rendimiento y seguridad.

Rust aporta seguridad de memoria y velocidad excepcional al desarrollo del lado del servidor, y ha estado ganando serio terreno en el espacio backend web. Este artículo cubre los fundamentos que necesitas para comenzar a construir aplicaciones web en Rust.

¿Por qué Rust para backend web?

  • Seguridad de memoria sin GC: El borrow checker detecta errores de memoria en tiempo de compilación, eliminando categorías enteras de errores en tiempo de ejecución.
  • Alto rendimiento: Rust supera fácilmente a Node.js y Python en el manejo de solicitudes.
  • Concurrencia sin miedo: El sistema de propiedad previene condiciones de carrera en tiempo de compilación.
  • Listo para WebAssembly: Rust compila a WASM, abriendo la puerta al desarrollo full-stack en un solo lenguaje.

Los servidores API a gran escala y los servicios en tiempo real están eligiendo cada vez más Rust para producción.

Frameworks web populares

FrameworkFortalezasEstrellas GitHub
axumModerno, type-safe, integración profunda con TokioCreciendo rápidamente
actix-webProbado en batalla, rendimiento extremadamente alto15k+
warpEnfoque funcional basado en filtros, curva de aprendizaje más pronunciada10k+

A partir de 2026, axum es la opción más común para nuevos proyectos.

Ejecutando tu primer servidor

Crear un proyecto

cargo new my-web-app
cd my-web-app

Agregar dependencias (axum + tokio)

[dependencies]
axum = "0.8"
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"

Servidor web mínimo

use axum::{Router, routing::get};

#[tokio::main]
async fn main() {
    let app = Router::new()
        .route("/", get(|| async { "¡Hola, Rust!" }));

    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}
cargo run
# Visita http://localhost:3000

Serialización y acceso a bases de datos

JSON con Serde

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct User {
    id: u32,
    name: String,
    email: String,
}

Base de datos con SQLx

[dependencies]
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres"] }
let pool = sqlx::PgPool::connect("postgres://user:pass@localhost/db").await?;
let users = sqlx::query_as::<_, User>("SELECT * FROM users").fetch_all(&pool).await?;

La curva de aprendizaje

Los conceptos de ownership, borrowing y lifetime de Rust toman tiempo para internalizar. Espera luchar con el compilador frecuentemente al principio. La ventaja es que un programa Rust que compila casi nunca falla en producción. Comienza con un pequeño endpoint de API y expande gradualmente.

Resumen

El stack axum + Tokio + Serde + SQLx es el estándar de facto actual para el desarrollo web en Rust. La curva de aprendizaje es pronunciada, pero dominarlo te permite construir backends rápidos y confiables que son un placer mantener. Da ese primer paso y prueba Rust para tu próximo servicio API.