Gere Códigos QR com Rust
O crate qrcode de Rust fornece geração de códigos QR rápida e segura em memória. Ideal para aplicações de alto desempenho, WebAssembly e ferramentas de nível de sistema.
Instalação
Adicione o crate qrcode ao seu Cargo.toml.
[dependencies]
qrcode = "0.14"
image = "0.25" # For PNG outputGerar Códigos QR com Rust
Exemplos de código usando o 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!");
}Gerar Códigos QR via API em Rust
Chame a API do QRCode.fun a partir de 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(())
}Pré-visualização de Código QR ao Vivo
Experimente gerar um código QR com Rust agora mesmo.
Biblioteca Nativa vs API
Compare o uso do crate qrcode com a API do QRCode.fun.
| Funcionalidade | Crate qrcode | QRCode.fun API |
|---|---|---|
| Complexidade de configuração | cargo add + crate image para PNG | Uma única requisição HTTP via reqwest |
| Personalização | Cores via crate image | Estilização completa: cores, formas, logotipos |
| Suporte offline | Sim | Requer internet |
| Manutenção | cargo update | Sempre atualizado |
| Formatos de saída | SVG, PNG (com crate image), terminal | PNG, SVG |
Casos de Uso de Códigos QR em Rust
Cenários comuns para códigos QR em aplicações Rust.
WebAssembly
Compile a geração de QR para WASM para criação ultrarrápida de códigos QR no navegador sem bibliotecas JavaScript.
Ferramentas CLI
Construa utilitários de linha de comando que geram códigos QR para exibição no terminal, saída de ficheiro ou integração com área de transferência.
Servidores de Alto Desempenho
Gere códigos QR em servidores web Actix ou Axum com alocação mínima de memória e rendimento máximo.
Sistemas Embebidos
Execute geração de códigos QR em dispositivos com recursos limitados onde as abstrações de custo zero do Rust brilham.
Mergulho Profundo no Ecossistema de Códigos QR em Rust
As abstrações de custo zero e a segurança de memória do Rust tornam-no especialmente adequado para geração de códigos QR de alto desempenho e implantação em WebAssembly.
Geração de QR com WebAssembly (WASM)
Rust compila para WebAssembly para geração de códigos QR no navegador com desempenho quase nativo. Use wasm-bindgen para expor uma função generate_qr que retorne strings SVG ou dados de pixels diretamente para JavaScript. O módulo WASM compilado tipicamente ocupa 50-100KB — comparável a uma biblioteca JavaScript mas significativamente mais rápido para geração em lote. Combine com wasm-pack para pacotes publicáveis no npm que funcionam em qualquer framework frontend.
Integração com Servidores Actix Web e Axum
Construa APIs de códigos QR de alto throughput com os frameworks web assíncronos do Rust. Tanto Actix Web como Axum tratam a geração de QR em handlers assíncronos, servindo bytes PNG com os headers Content-Type apropriados. O modelo de ownership do Rust elimina condições de corrida na geração concorrente de QR. Use middleware tower para limitação de taxa e validação de requisições. Faça benchmarks com criterion para verificar tempos de geração abaixo do milissegundo para códigos QR padrão.
Sistemas Embarcados e Ambientes no_std
O crate qrcode suporta ambientes no_std, permitindo geração de QR em microcontroladores e dispositivos embarcados sem sistema operativo. Gere matrizes QR em dispositivos ESP32 ou STM32 para configuração IoT, emparelhamento de dispositivos e diagnósticos. Em ambientes com recursos limitados, o uso previsível de memória do Rust (sem coletor de lixo) garante que a geração de QR nunca cause picos inesperados de memória ou latência.
Perguntas Frequentes
Perguntas comuns sobre a geração de códigos QR com Rust.
Comece a gerar códigos QR com Rust
Use o nosso gerador gratuito ou integre a API nas suas aplicações Rust.