Bibliothèque de Codes QR Rust

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.

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

Gé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!");
}
QRCode.fun API

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.

Intégration API 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(())
}

Aperçu du Code QR en Direct

Essayez de générer un code QR avec Rust maintenant.

Aperçu QR

Bibliothèque Native vs API

Comparez l'utilisation du crate qrcode avec l'API QRCode.fun.

FonctionnalitéCrate qrcodeQRCode.fun API
Complexité de configurationcargo add + crate image pour PNGUne seule requête HTTP via reqwest
PersonnalisationCouleurs via crate imageStylisation complète : couleurs, formes, logos
Support hors ligneOuiNécessite internet
Maintenancecargo updateToujours à jour
Formats de sortieSVG, PNG (avec crate image), terminalPNG, 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.

Le crate qrcode est le choix le plus populaire. Il génère des codes QR sous forme de chaînes SVG ou de matrice que vous pouvez rendre avec le crate image.

Explorez les Bibliothèques de Codes QR pour d'Autres Langages

Trouvez des guides de génération de codes QR et des exemples de code pour votre langage de programmation préféré.

Commencez à générer des codes QR avec Rust

Utilisez notre générateur gratuit ou intégrez l'API dans vos applications Rust.