Biblioteca de Códigos QR en Rust

Genera Códigos QR con Rust

El crate qrcode de Rust proporciona generación de códigos QR rápida y segura en memoria. Ideal para aplicaciones de alto rendimiento, WebAssembly y herramientas a nivel de sistema.

Instalación

Agrega el crate qrcode a tu Cargo.toml.

Cargo.toml
[dependencies]
qrcode = "0.14"
image = "0.25"  # For PNG output

Genera Códigos QR con Rust

Ejemplos de código usando el crate qrcode.

QR Code as SVG

use qrcode::QrCode;
use qrcode::render::svg;

fn main() {
    let code = QrCode::new("https://qrcode.fun").unwrap();
    let svg = code.render::<svg::Color>()
        .min_dimensions(200, 200)
        .build();

    std::fs::write("qrcode.svg", &svg).unwrap();
    println!("SVG QR code saved!");
}

QR Code as PNG

use qrcode::QrCode;
use image::Luma;

fn main() {
    let code = QrCode::new("https://qrcode.fun").unwrap();
    let image = code.render::<Luma<u8>>()
        .dark_color(Luma([26u8]))
        .light_color(Luma([255u8]))
        .quiet_zone(true)
        .min_dimensions(300, 300)
        .build();

    image.save("qrcode.png").unwrap();
    println!("PNG QR code saved!");
}
QRCode.fun API

Genera Códigos QR vía API en Rust

Llama a la API de QRCode.fun desde Rust usando reqwest para códigos QR estilizados.

Integración de API en Rust
use reqwest;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::Client::new();
    let response = client
        .post("https://qrcode.fun/api/generate-qr-styled")
        .json(&json!({
            "data": "https://qrcode.fun",
            "width": 300,
            "height": 300,
            "type": "png",
            "margin": 10,
            "dotsOptions": { "color": "#1A2B3C", "type": "rounded" },
            "cornersSquareOptions": { "color": "#8564C3", "type": "extra-rounded" },
            "backgroundOptions": { "color": "#FFFFFF" }
        }))
        .send()
        .await?;

    let result: serde_json::Value = response.json().await?;
    println!("{}", &result["data"].as_str().unwrap()[..50]);
    Ok(())
}

Vista Previa de Código QR en Vivo

Prueba a generar un código QR con Rust ahora mismo.

Vista previa QR

Biblioteca Nativa vs API

Compara el uso del crate qrcode con la API de QRCode.fun.

CaracterísticaCrate qrcodeQRCode.fun API
Complejidad de configuracióncargo add + crate image para PNGUna sola solicitud HTTP vía reqwest
PersonalizaciónColores vía crate imageEstilizado completo: colores, formas, logotipos
Soporte sin conexiónRequiere internet
Mantenimientocargo updateSiempre actualizado
Formatos de salidaSVG, PNG (con crate image), terminalPNG, SVG

Casos de Uso de Códigos QR en Rust

Escenarios comunes para códigos QR en aplicaciones Rust.

WebAssembly

Compila la generación de QR a WASM para creación ultrarrápida de códigos QR en el navegador sin bibliotecas JavaScript.

Herramientas CLI

Construye utilidades de línea de comandos que generan códigos QR para visualización en terminal, salida de archivo o integración con portapapeles.

Servidores de Alto Rendimiento

Genera códigos QR en servidores web Actix o Axum con mínima asignación de memoria y máximo rendimiento.

Sistemas Embebidos

Ejecuta generación de códigos QR en dispositivos con recursos limitados donde las abstracciones de costo cero de Rust brillan.

Inmersión Profunda en el Ecosistema de Códigos QR en Rust

Las abstracciones de costo cero y la seguridad de memoria de Rust lo hacen especialmente adecuado para la generación de códigos QR de alto rendimiento y el despliegue en WebAssembly.

Generación de QR con WebAssembly (WASM)

Rust compila a WebAssembly para la generación de códigos QR en el navegador con rendimiento casi nativo. Usa wasm-bindgen para exponer una función generate_qr que devuelva cadenas SVG o datos de píxeles directamente a JavaScript. El módulo WASM compilado típicamente ocupa 50-100KB — comparable a una biblioteca JavaScript pero significativamente más rápido para generación por lotes. Combina con wasm-pack para paquetes publicables en npm que funcionen en cualquier framework frontend.

Integración con Servidores Actix Web y Axum

Construye APIs de códigos QR de alto rendimiento con los frameworks web asíncronos de Rust. Tanto Actix Web como Axum manejan la generación de QR en handlers asíncronos, sirviendo bytes PNG con los headers Content-Type apropiados. El modelo de propiedad de Rust elimina las condiciones de carrera en la generación concurrente de QR. Usa middleware tower para limitación de tasa y validación de solicitudes. Realiza benchmarks con criterion para verificar tiempos de generación por debajo del milisegundo para códigos QR estándar.

Sistemas Embebidos y Entornos no_std

El crate qrcode soporta entornos no_std, permitiendo la generación de QR en microcontroladores y dispositivos embebidos sin sistema operativo. Genera matrices QR en dispositivos ESP32 o STM32 para configuración IoT, emparejamiento de dispositivos y diagnósticos. En entornos con recursos limitados, el uso predecible de memoria de Rust (sin recolector de basura) asegura que la generación de QR nunca cause picos inesperados de memoria o latencia.

Preguntas Frecuentes

Preguntas comunes sobre la generación de códigos QR con Rust.

El crate qrcode es la opción más popular. Genera códigos QR como cadenas SVG o como una matriz que puedes renderizar con el crate image.

Explora Bibliotecas de Códigos QR para Otros Lenguajes

Encuentra guías de generación de códigos QR y ejemplos de código para tu lenguaje de programación preferido.

Comienza a generar códigos QR con Rust

Usa nuestro generador gratuito o integra la API en tus aplicaciones Rust.