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.
[dependencies]
qrcode = "0.14"
image = "0.25" # For PNG outputGenera 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!");
}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.
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.
Biblioteca Nativa vs API
Compara el uso del crate qrcode con la API de QRCode.fun.
| Característica | Crate qrcode | QRCode.fun API |
|---|---|---|
| Complejidad de configuración | cargo add + crate image para PNG | Una sola solicitud HTTP vía reqwest |
| Personalización | Colores vía crate image | Estilizado completo: colores, formas, logotipos |
| Soporte sin conexión | Sí | Requiere internet |
| Mantenimiento | cargo update | Siempre actualizado |
| Formatos de salida | SVG, PNG (con crate image), terminal | PNG, 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.
Comienza a generar códigos QR con Rust
Usa nuestro generador gratuito o integra la API en tus aplicaciones Rust.