Générer des Codes QR avec Rust
Le crate qrcode de Rust fournit une génération de codes QR rapide et sûre en mémoire. Idéal pour les applications haute performance, WebAssembly et les outils système.
Installation
Ajoutez le crate qrcode à votre Cargo.toml.
[dependencies]
qrcode = "0.14"
image = "0.25" # For PNG outputGénérer des Codes QR avec Rust
Exemples de code utilisant le 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!");
}Générer des Codes QR via API en Rust
Appelez l'API QRCode.fun depuis Rust avec reqwest pour des codes QR stylisés.
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(())
}Aperçu du Code QR en Direct
Essayez de générer un code QR avec Rust maintenant.
Bibliothèque Native vs API
Comparez l'utilisation du crate qrcode avec l'API QRCode.fun.
| Fonctionnalité | Crate qrcode | QRCode.fun API |
|---|---|---|
| Complexité de configuration | cargo add + crate image pour PNG | Une seule requête HTTP via reqwest |
| Personnalisation | Couleurs via crate image | Stylisation complète : couleurs, formes, logos |
| Support hors ligne | Oui | Nécessite internet |
| Maintenance | cargo update | Toujours à jour |
| Formats de sortie | SVG, PNG (avec crate image), terminal | PNG, SVG |
Cas d'Utilisation des Codes QR en Rust
Scénarios courants pour les codes QR dans les applications Rust.
WebAssembly
Compilez la génération de QR en WASM pour une création ultra-rapide de codes QR côté navigateur sans bibliothèques JavaScript.
Outils CLI
Créez des utilitaires en ligne de commande qui génèrent des codes QR pour l'affichage terminal, la sortie fichier ou l'intégration presse-papiers.
Serveurs Haute Performance
Générez des codes QR dans des serveurs web Actix ou Axum avec une allocation mémoire minimale et un débit maximal.
Systèmes Embarqués
Exécutez la génération de codes QR sur des appareils à ressources limitées où les abstractions à coût nul de Rust excellent.
Plongée Approfondie dans l'Écosystème des Codes QR en Rust
Les abstractions à coût nul et la sécurité mémoire de Rust le rendent particulièrement adapté à la génération haute performance de codes QR et au déploiement WebAssembly.
Génération QR avec WebAssembly (WASM)
Rust compile en WebAssembly pour la génération de codes QR côté navigateur avec des performances quasi natives. Utilisez wasm-bindgen pour exposer une fonction generate_qr qui retourne des chaînes SVG ou des données de pixels directement à JavaScript. Le module WASM compilé fait typiquement 50-100KB — comparable à une bibliothèque JavaScript mais significativement plus rapide pour la génération par lots. Combinez avec wasm-pack pour des packages publiables sur npm fonctionnant dans n'importe quel framework frontend.
Intégration Serveur Actix Web et Axum
Construisez des APIs de codes QR à haut débit avec les frameworks web asynchrones de Rust. Actix Web et Axum gèrent tous deux la génération QR dans des handlers asynchrones, servant des octets PNG avec les en-têtes Content-Type appropriés. Le modèle d'ownership de Rust élimine les courses de données dans la génération QR concurrente. Utilisez le middleware tower pour la limitation de débit et la validation des requêtes. Effectuez des benchmarks avec criterion pour vérifier des temps de génération inférieurs à la milliseconde pour les codes QR standard.
Systèmes Embarqués et Environnements no_std
Le crate qrcode supporte les environnements no_std, permettant la génération QR sur des microcontrôleurs et appareils embarqués sans système d'exploitation. Générez des matrices QR sur des appareils ESP32 ou STM32 pour la configuration IoT, l'appairage d'appareils et les diagnostics. Dans les environnements à ressources limitées, l'utilisation mémoire prévisible de Rust (pas de ramasse-miettes) garantit que la génération QR ne cause jamais de pics de mémoire ou de latence inattendus.
Questions Fréquemment Posées
Questions courantes sur la génération de codes QR avec Rust.
Commencez à générer des codes QR avec Rust
Utilisez notre générateur gratuit ou intégrez l'API dans vos applications Rust.