Le guide complet et pragmatique pour creer des applications desktop professionnelles en Rust.
De l'idee au produit fini, du premier pixel au premier client.
Vue d'ensemble • Pourquoi ce livre • Structure • Commencer • FAQ
I. Mindset • II. Fondations • III. UI • IV. Architecture • V. Metiers • VI. Qualite • VII. Business
Ce livre est un guide complet pour creer des applications desktop professionnelles en Rust. Il couvre l'ensemble du cycle de developpement : de la conception architecturale au deploiement, en passant par la creation d'interfaces modernes et de systemes de design reutilisables.
Ce n'est pas un enieme tutoriel Rust. C'est un guide de A a Z pour construire, designer, architecturer et vendre un vrai logiciel desktop.
En suivant ce livre, vous serez capable de creer des applications comme :
| Type d'application | Exemple concret | Chapitres cles |
|---|---|---|
| ERP / Gestion commerciale | Clients, factures, TVA, exports PDF | Parties IV + V |
| Outil de productivite | Notes, recherche full-text, IA locale | Parties III + V |
| Dashboard professionnel | KPIs, graphiques temps reel, data viz | Parties III + V |
| Logiciel metier sur mesure | Offline-first, chiffrement, plugins | Parties IV + VI |
+-----------------------------------------------------------------------------+
| RUST DESKTOP MASTERY |
+-----------------------------------------------------------------------------+
| 7 Parties | 33 Chapitres | 100+ Sous-sections | 6 Annexes |
+-----------------------------------------------------------------------------+
| |
| PARTIE I Mindset & Philosophie [Chapitres 1-3] |
| PARTIE II Fondations Rust [Chapitres 4-7] |
| PARTIE III Interfaces Utilisateur [Chapitres 8-13] |
| PARTIE IV Architecture Logicielle [Chapitres 14-19] |
| PARTIE V Fonctionnalites Metiers [Chapitres 20-24] |
| PARTIE VI Finition & Qualite [Chapitres 25-28] |
| PARTIE VII Production & Business [Chapitres 29-33] |
| |
+-----------------------------------------------------------------------------+
| Categorie | Technologies |
|---|---|
| Langage | Rust 2021 Edition |
| UI Framework | egui, eframe, Tauri, iced, wgpu |
| Base de donnees | SQLite (rusqlite), migrations |
| Async/Concurrence | Tokio, crossbeam, Arc, ArcSwap |
| Recherche | Tantivy (full-text search) |
| IA locale | Candle, embeddings, inference CPU |
| printpdf, generation de documents | |
| Logs/Profiling | tracing, flamegraphs, criterion |
| Packaging | cargo-wix (Windows), DMG (macOS), AppImage (Linux) |
| Tests | cargo test, criterion (benchmarks), snapshots UI |
| Securite | AES-GCM, Argon2, Ed25519, chiffrement local |
Le developpement desktop connait une renaissance. Apres des annees de domination du web et des applications SaaS, les developpeurs et les entreprises redecouvrent les avantages des applications natives.
| Probleme Web/SaaS | Solution Desktop Rust |
|---|---|
| Latence reseau (100-500ms) | Reponse instantanee (<10ms) |
| Abonnement mensuel obligatoire | Achat unique possible |
| Donnees sur serveur tiers | Donnees 100% locales |
| Dependance internet | Fonctionne offline |
| Infrastructure complexe | Un seul fichier binaire |
| Risques de securite cloud | Chiffrement local |
| Couts qui augmentent avec l'usage | Cout fixe, scalabilite gratuite |
Rust est le langage ideal pour cette nouvelle ere :
+-------------------------------------------------------------------+
| AVANTAGES DE RUST |
+-------------------------------------------------------------------+
| |
| PERFORMANCE Comparable au C/C++, zero-cost |
| abstractions, pas de GC |
| |
| SECURITE MEMOIRE Ownership, borrowing, pas de null |
| pointer, pas de data races |
| |
| BINAIRE UNIQUE Compilation statique, pas de DLL, |
| deploiement simplifie |
| |
| TOOLING MODERNE Cargo, rustfmt, clippy, rust-analyzer |
| |
| CROSS-PLATFORM Windows, macOS, Linux depuis le meme |
| code source |
| |
+-------------------------------------------------------------------+
D'autres ressources enseignent Rust. D'autres parlent d'UI. Ce livre est le seul a couvrir le parcours complet :
Idee
|
v
[Partie I] Pourquoi Rust ? Pourquoi desktop ? Penser produit.
|
v
[Partie II] Ownership, async, projet multi-crates, profiling.
|
v
[Partie III] egui, design system, composants, UX pro.
|
v
[Partie IV] Clean archi, event bus, SQLite, plugins.
|
v
[Partie V] ERP, recherche, dashboards, IA locale.
|
v
[Partie VI] Performance, accessibilite, packaging, tests.
|
v
[Partie VII] Licences, distribution, marketing, monetisation.
|
v
Produit fini, distribue, monetise
Concretement, ce livre vous donne :
- Du code reel -- pas des exemples jouets, mais des modules production-ready
- Une vision produit -- comment penser UX, business et technique ensemble
- Un cas d'etude complet -- NoteVault, une app construite de A a Z (Chapitre 24)
- Des patterns eprouves -- clean architecture, event bus, state management adaptes au desktop
- Le chemin vers la monetisation -- licences, distribution, marketing, support
| Profil | Ce que vous apprendrez |
|---|---|
| Developpeur Web fatigue | Creer des apps performantes sans Electron, npm, ou infrastructure |
| Developpeur Rust debutant | Appliquer Rust a des projets concrets avec UI |
| Developpeur desktop experimente | Moderniser votre stack avec Rust et egui |
| Entrepreneur / Indie hacker | Construire et monetiser un logiciel desktop |
| Architecte logiciel | Patterns et architecture pour apps maintenables |
Pour etre honnete et vous faire gagner du temps :
- Un cours Rust debutant -- on suppose les bases acquises (variables, fonctions, structs, enums)
- Du code copie-colle sans explication -- chaque decision est expliquee et justifiee
- Une couverture exhaustive de tous les frameworks -- on se concentre sur egui avec des comparaisons
- Du developpement web/serveur -- c'est 100% desktop, 100% local-first
DEBUTANT RUST DEVELOPPEUR PRESSE ENTREPRENEUR
============ ================== =============
Partie I (philosophie) Partie III (UI) Partie I (vision)
| | |
v v v
Partie II (fondations) Partie IV (archi) Partie V (fonctionnalites)
| | |
v v v
Partie III (UI) Partie V (metiers) Partie VII (business)
| | |
v v v
Partie IV (archi) Partie VI (qualite) Partie VI (polish)
| |
v v
Partie V (metiers) Partie VII (business)
|
v
Partie VI (qualite)
|
v
Partie VII (business)
Objectif : Comprendre pourquoi Rust est le choix ideal pour le desktop et adopter la bonne philosophie produit.
Cette partie pose les fondations philosophiques et strategiques. Avant d'ecrire une seule ligne de code, il est crucial de comprendre pourquoi nous faisons ces choix et comment penser notre travail.
Vous apprendrez a :
- Argumenter le choix de Rust pour un projet desktop
- Identifier les cas d'usage ou le desktop surpasse le web
- Adopter une mentalite produit orientee utilisateur
- Evaluer les compromis entre performance, UX et time-to-market
Explore les raisons fondamentales qui font de Rust le choix ideal : fatigue de l'ecosysteme JS/Electron, performance native, securite memoire, et souverainete des donnees.
| Section | Description | Concepts cles |
|---|---|---|
| La fatigue JS / Electron / SaaS | Problemes de l'ecosysteme actuel | Memoire Electron, node_modules, instabilite npm |
| Performance native | Pourquoi Rust est rapide | Zero-cost abstractions, comparaison JS/JVM |
| Securite memoire | Bugs evites a la compilation | Ownership, borrowing, Option vs null |
| Binaire unique | Deploiement simplifie | Compilation statique, pas de DLL hell |
| Offline-first | Architecture locale | Donnees locales, sync optionnelle |
| Souverainete des donnees | Controle utilisateur | Chiffrement local, RGPD, vie privee |
Le retour en force des applications locales : pourquoi et quand le desktop surpasse le web.
| Section | Description | Concepts cles |
|---|---|---|
| Le retour des apps locales | Tendances du marche | Obsidian, Notion local, Linear |
| UX superieure au navigateur | Avantages UX natifs | Raccourcis globaux, integration OS |
| IA locale, SQLite, fichiers | Technologies cles | LLM locaux, SQLite embarque |
| Cas concrets | Exemples d'applications | ERP, prise de notes, automation |
| Quand ne pas utiliser le web | Criteres de decision | Matrice de choix web vs desktop |
Adopter une mentalite produit orientee utilisateur plutot qu'une approche purement technique.
| Section | Description | Concepts cles |
|---|---|---|
| Ship plutot que demo | Livrer de la valeur | MVP, iteration, feedback loop |
| Logiciel utilisable 8h/jour | Ergonomie professionnelle | Fatigue visuelle, raccourcis, workflow |
| Dette UX vs dette technique | Prioriser l'experience | Impact utilisateur, cout de la friction |
| Le design comme avantage | Differenciation | Design system, coherence, polish |
Objectif : Maitriser les concepts Rust essentiels pour construire des applications robustes.
Cette partie couvre les concepts Rust necessaires au developpement desktop. L'objectif n'est pas d'enseigner Rust depuis zero, mais de maitriser les patterns specifiques aux applications reelles.
Vous apprendrez a :
- Ecrire du code Rust idiomatique et maintenable
- Structurer un projet multi-crates professionnel
- Gerer la concurrence sans bloquer l'interface
- Diagnostiquer et optimiser les performances
Les concepts Rust essentiels expliques de maniere pratique, avec focus sur le developpement desktop.
| Section | Description | Concepts cles |
|---|---|---|
| Ownership explique simplement | Les 3 regles fondamentales | Move, Copy, Drop, ownership transfer |
| Borrow checker sans douleur | References maitrisees | &T, &mut T, lifetimes basiques |
| Erreurs idiomatiques | Gestion d'erreurs Rust | Result, Option, ?, thiserror, anyhow |
| Patterns utiles | Patterns courants | Builder, Newtype, State Machine, From/Into |
Structurer une application Rust professionnelle, maintenable et evolutive.
| Section | Description | Concepts cles |
|---|---|---|
| Cargo Workspace | Multi-crates | Workspace, dependances partagees |
| Crates Modulaires | Separation des responsabilites | core, app, ui, infrastructure |
| Architecture de Dossiers | Organisation du code | Conventions, modules, visibilite |
| Tests et Benchmarks | Qualite du code | #[test], integration tests, Criterion |
Gerer la concurrence sans bloquer l'interface utilisateur.
| Section | Description | Concepts cles |
|---|---|---|
| Tokio | Runtime async | spawn, select!, multi-thread runtime |
| Channels (crossbeam) | Communication inter-threads | mpsc, bounded/unbounded, select |
| Arc et ArcSwap | Partage thread-safe | Arc<Mutex>, ArcSwap, RCU pattern |
| Thread UI vs workers | Separation UI/calcul | Main thread, background workers |
| Eviter les freezes | UI toujours reactive | Chunked processing, cancellation |
Diagnostiquer et optimiser les performances de maniere rigoureuse.
| Section | Description | Concepts cles |
|---|---|---|
| Tracing | Logs structures | spans, levels, subscribers, #[instrument] |
| Logs visuels | Panel de logs integre | egui log viewer, filtrage |
| Flamegraphs | Profiling visuel | cargo-flamegraph, tracing-chrome |
| Optimiser sans se mentir | Mesures rigoureuses | Benchmarks, profiling avant optimisation |
Objectif : Construire des interfaces utilisateur professionnelles et reactives.
Cette partie est consacree a la creation d'UI en Rust. Nous couvrons les frameworks disponibles, les patterns de design system, et les techniques pour construire des interfaces modernes.
Vous apprendrez a :
- Choisir le framework UI adapte a votre projet
- Construire des interfaces reactives avec egui
- Creer et maintenir un design system coherent
- Implementer des composants reutilisables de qualite professionnelle
Comparaison detaillee des frameworks UI Rust pour choisir le bon outil.
| Section | Description | Concepts cles |
|---|---|---|
| egui | Immediate mode GUI | Simple, rapide, prototypage |
| Tauri | Web frontend + Rust | HTML/CSS/JS, WebView, IPC |
| wgpu | GPU rendering | Bas niveau, performance max |
| iced | Declaratif Elm-style | Etat immutable, messages |
| Quand choisir quoi | Matrice de decision | Criteres, recommandations |
Guide pratique complet pour maitriser egui, le framework choisi pour ce livre.
| Section | Description | Concepts cles |
|---|---|---|
| Immediate mode | Mental model | Difference avec retained mode |
| Layouts | Organisation visuelle | Vertical, horizontal, grid, panels |
| Widgets | Elements d'interface | Labels, buttons, inputs, sliders |
| Gestion de l'etat | State management | Local vs global, persistence |
Construire un systeme de design coherent et maintenable.
| Section | Description | Concepts cles |
|---|---|---|
| Tokens | Variables centralisees | Constantes de design, JSON tokens |
| Couleurs | Palette coherente | Primary, secondary, semantic colors |
| Spacing | Grille et espacement | 4px/8px grid, margins, paddings |
| Typographie | Hierarchie textuelle | Font sizes, weights, line heights |
| Themes | Dark/light mode | Theme switching, persistence |
| DPI scaling | Multi-resolutions | HiDPI, scaling factors |
Bibliotheque de composants UI professionnels prets a l'emploi.
| Section | Description | Concepts cles |
|---|---|---|
| Button | Boutons | Primary, secondary, danger, disabled |
| Input | Champs de saisie | Text, password, validation |
| Table | Tableaux de donnees | Tri, pagination, selection |
| Sidebar | Navigation laterale | Collapse, nested items |
| Modals | Dialogues | Confirmation, formulaires |
| Toasts | Notifications | Success, error, warning |
| Inspector panels | Panneaux de proprietes | Details, edition |
| Command palette | Recherche d'actions | Ctrl+K, fuzzy search |
Les patterns UX qui font la difference entre une app amateur et professionnelle.
| Section | Description | Concepts cles |
|---|---|---|
| Loading | Etats de chargement | Spinners, progress bars |
| Empty states | Ecrans vides | Illustrations, call-to-action |
| Erreurs | Messages d'erreur | Clairs, actionnables |
| Undo et redo | Historique d'actions | Command pattern, stack |
| Autosave | Sauvegarde automatique | Debouncing, indicateur |
| Feedback instantane | Reponse < 100ms | Optimistic updates |
Workflow efficace pour transformer des maquettes en code.
| Section | Description | Concepts cles |
|---|---|---|
| Maquettes SVG | Creation de wireframes | Figma, SVG export |
| Mapping IDs | Lier design et code | Nommage, convention |
| Design vers egui | Traduction pratique | Extraction, composants |
| Workflow rapide | Iterations design/code | Hot reload, preview |
Objectif : Structurer une application maintenable, testable et evolutive.
Cette partie couvre l'architecture logicielle. Nous appliquons les principes de clean architecture adaptes au contexte desktop.
Vous apprendrez a :
- Structurer une application avec une clean architecture
- Implementer une communication inter-composants efficace
- Gerer l'etat de maniere previsible
- Persister les donnees localement de facon fiable
Organiser le code en couches independantes et testables.
| Section | Description | Concepts cles |
|---|---|---|
| Couches | Organisation en couches | Core, App, UI, Infrastructure |
| Separation logique | Responsabilites claires | Single responsibility |
| Decouplage | Interfaces et abstractions | Dependency injection, traits |
| Dependances | Direction des dependances | Vers l'interieur uniquement |
Patterns de communication decouplee entre composants.
| Section | Description | Concepts cles |
|---|---|---|
| Channels | Communication via messages | mpsc, broadcast |
| Pub/sub | Abonnements multiples | Subscribe, publish, filter |
| Messages | Types de messages | Command, Event, Query |
| Flux de donnees | Flux unidirectionnel | Single source of truth |
Maintenir un etat applicatif coherent et previsible.
| Section | Description | Concepts cles |
|---|---|---|
| Store global | Source unique de verite | AppState, reducers |
| Etat local | UI state vs app state | Separation, synchronisation |
| Cache | Performance | LRU, TTL, invalidation |
| Undo stack | Historique des changements | Command pattern |
Persister les donnees localement de facon fiable et securisee.
| Section | Description | Concepts cles |
|---|---|---|
| SQLite | Base de donnees embarquee | rusqlite, requetes, transactions |
| Migrations | Evolution du schema | Versioning, rollback |
| Offline-first | Sync optionnelle | Queue de sync, conflits |
| Chiffrement | Securite des donnees | AES-GCM, Argon2, key derivation |
Generer des documents et echanger des donnees.
| Section | Description | Concepts cles |
|---|---|---|
| Rapports | Generation PDF | printpdf, templates |
| Factures | Documents commerciaux | Layout, logo, conformite |
| CSV et JSON | Import/export | csv crate, serde_json |
| Integration systeme | Fichiers et OS | native-dialog, associations |
Concevoir une architecture extensible par des tiers.
| Section | Description | Concepts cles |
|---|---|---|
| Modules dynamiques | Chargement runtime | libloading, FFI |
| Feature flags | Activation conditionnelle | Compile-time, runtime flags |
| Architecture plugin | API stable | Trait objects, sandboxing |
Objectif : Implementer des fonctionnalites business concretes et reutilisables.
Cette partie presente l'implementation de fonctionnalites business. Chaque chapitre est un module reutilisable pour vos applications.
Vous apprendrez a :
- Construire un systeme ERP complet
- Implementer un moteur de recherche performant
- Creer des dashboards avec visualisations
- Integrer l'IA locale dans vos applications
Systeme complet de gestion commerciale : clients, factures, TVA, exports.
| Section | Description | Concepts cles |
|---|---|---|
| Clients | Gestion des clients | CRUD, validation, recherche |
| Factures | Facturation | Lignes, calculs, numerotation |
| TVA | Fiscalite | Taux, calcul, conformite |
| Documents | Generation, templates | |
| Exports | Donnees | CSV, Excel, comptabilite |
Recherche full-text performante avec Tantivy.
| Section | Description | Concepts cles |
|---|---|---|
| Tantivy | Moteur de recherche | Architecture, installation |
| Indexation | Creation d'index | Schema, documents, async |
| Full-text search | Requetes | Query parser, highlighting |
| Performance | Optimisation | Cache, incremental indexing |
Tableaux de bord avec KPIs et graphiques en temps reel.
| Section | Description | Concepts cles |
|---|---|---|
| KPI cards | Metriques cles | Cards, trends, comparaison |
| Charts | Graphiques | egui_plot, line, bar, pie |
| Temps reel | Live updates | Polling, streaming |
| UX data | Presentation | Lisibilite, interaction |
Integrer l'intelligence artificielle sans cloud avec Candle.
| Section | Description | Concepts cles |
|---|---|---|
| Embeddings | Vecteurs de texte | BERT, sentence transformers |
| Recherche semantique | Similarite | Cosine similarity, HNSW |
| Inference CPU | Sans GPU | Quantization, batch processing |
| Souverainete IA | Vie privee | Donnees locales, RGPD |
Application NoteVault : de zero a finie, code reel inclus.
| Section | Description | Concepts cles |
|---|---|---|
| De zero a finie | Progression complete | Planning, milestones |
| Code reel | Implementation | Architecture, modules |
| Design system | Theme applique | Tokens, composants |
| Packaging | Distribution | Build, installer, release |
Objectif : Polir l'application pour une qualite professionnelle.
Cette partie couvre les aspects qui transforment une application fonctionnelle en produit professionnel : performance percue, accessibilite, packaging et tests.
Vous apprendrez a :
- Optimiser la performance percue
- Creer une application accessible
- Packager pour Windows, macOS et Linux
- Mettre en place une strategie de tests efficace
Techniques pour ameliorer la perception de performance par l'utilisateur.
| Section | Description | Concepts cles |
|---|---|---|
| Skeleton | Placeholders animes | Loading states |
| Lazy loading | Chargement differe | Pagination, virtual scroll |
| Demarrage instantane | First paint rapide | Splash screen, progressive |
| Caches | Mise en cache | LRU, TTL, invalidation |
Creer une application utilisable par tous.
| Section | Description | Concepts cles |
|---|---|---|
| Raccourcis clavier | Systeme de raccourcis | Global, contextuel, personnalisable |
| Navigation clavier | Focus management | Tab order, focus visible |
| Contrastes | WCAG compliance | AA/AAA, ratios |
| Tailles et lisibilite | Zones cliquables | 44px minimum, touch targets |
Distribuer sur Windows, macOS et Linux.
| Section | Description | Concepts cles |
|---|---|---|
| Windows | MSI installer | cargo-wix, code signing |
| macOS | App bundle | DMG, notarization, universal binary |
| Linux | Packages | AppImage, .deb, Flatpak |
| Installers | UX d'installation | Welcome, license, folder |
| Mises a jour | Auto-update | self_update, GitHub releases |
Strategies de test pour une qualite constante.
| Section | Description | Concepts cles |
|---|---|---|
| Tests unitaires | Logique metier | Mocks, fixtures, coverage |
| Snapshots UI | Regression visuelle | Screenshot comparison |
| Tests manuels | Checklists | Scenarios, exploratory testing |
Objectif : Transformer le code en produit viable et rentable.
Cette derniere partie couvre les aspects business et de mise en production d'une application desktop professionnelle.
Vous apprendrez a :
- Choisir et implementer un modele de licence
- Creer une presence web efficace
- Gerer le support et la maintenance
- Developper des revenus complementaires
Choisir et implementer un modele de monetisation.
| Section | Description | Concepts cles |
|---|---|---|
| Types de licences | Modeles | Perpetuelle, abonnement, freemium |
| Generation et validation | Systeme de cles | Ed25519, machine ID, HMAC |
| Activation offline | Sans serveur | Hardware binding, tokens |
| Modele freemium | Conversion | Free tier limits, upgrade prompts |
Faire connaitre et distribuer votre application.
| Section | Description | Concepts cles |
|---|---|---|
| Site web produit | Landing page | Hero, features, pricing, CTA |
| SEO | Visibilite | Keywords, blog, long tail |
| Page de telechargement | Conversion | OS detection, checksums |
| Canaux | Distribution | Stores, Homebrew, Chocolatey |
Accompagner les utilisateurs et maintenir le produit.
| Section | Description | Concepts cles |
|---|---|---|
| Documentation | In-app help | Contextuelle, searchable |
| Feedback in-app | Widget | Screenshot, logs, email |
| Telemetrie | Analytics | Opt-in, anonymisee, RGPD |
| Gestion des bugs | Crash reports | Panic handler, issue tracking |
Strategies de revenus complementaires.
| Section | Description | Concepts cles |
|---|---|---|
| Modules complementaires | Add-ons | Marketplace, licensing |
| Personnalisation | White-label | Branding, custom features |
| Services associes | Premium | Support, formation, consulting |
| Affiliation | Partenariats | Referral program, tracking |
Faire evoluer le produit sur le long terme.
| Section | Description | Concepts cles |
|---|---|---|
| Roadmap | Planification | Prioritization, public roadmap |
| Communaute | Engagement | Feature voting, Discord, forums |
| Open source | Strategie hybride | Core open, addons paid |
| Evolution technique | Maintenance | Dependency updates, migrations |
| Metriques | KPIs | DAU, MAU, NPS, churn, LTV |
Ressources de reference rapide pour consultation quotidienne.
| Annexe | Description | Utilisation |
|---|---|---|
| A. Cargo.toml complet | Configuration avec dependances | Copier-coller pour demarrer |
| B. Cheatsheet egui | Reference rapide widgets | Aide-memoire pendant le developpement |
| C. Patterns Rust | Resume des patterns | Rappel des bonnes pratiques |
| D. Checklist de lancement | Todo-list release | Verification avant publication |
| E. Ressources et liens | Documentation externe | Pour aller plus loin |
| F. Glossaire | Definitions | Reference terminologique |
+-------------------------------------------------------------------+
| PREREQUIS RECOMMANDES |
+-------------------------------------------------------------------+
| |
| [x] Rust basique Variables, fonctions, structs, enums |
| [x] Ligne de commande Cargo, terminal basics |
| [x] Git Clone, commit, push (optionnel) |
| [ ] Pas requis Experience GUI, async avance |
| |
+-------------------------------------------------------------------+
# Installer Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Verifier l'installation
rustc --version
cargo --version
# Creer un nouveau projet desktop
cargo new mon-app-desktop
cd mon-app-desktop
# Ajouter egui/eframe
cargo add eframe| Mode | Description | Recommande pour |
|---|---|---|
| Lecture lineaire | Parties I a VII dans l'ordre | Debutants, apprentissage complet |
| Par projet | Partie V + chapitres necessaires | Developpeurs presses |
| Reference | Chapitres specifiques selon besoins | Developpeurs experimentes |
| Projet fil rouge | Suivre NoteVault (Chapitre 24) | Apprentissage pratique |
// main.rs - Votre premiere application desktop en Rust
use eframe::egui;
fn main() -> eframe::Result<()> {
let options = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default()
.with_inner_size([400.0, 300.0])
.with_title("Ma Premiere App Rust"),
..Default::default()
};
eframe::run_native(
"mon_app",
options,
Box::new(|_cc| Ok(Box::new(MonApp::default()))),
)
}
#[derive(Default)]
struct MonApp {
nom: String,
compteur: i32,
}
impl eframe::App for MonApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("Bienvenue dans Rust Desktop!");
ui.horizontal(|ui| {
ui.label("Votre nom:");
ui.text_edit_singleline(&mut self.nom);
});
if !self.nom.is_empty() {
ui.label(format!("Bonjour, {}!", self.nom));
}
ui.separator();
ui.horizontal(|ui| {
if ui.button("-").clicked() {
self.compteur -= 1;
}
ui.label(format!("Compteur: {}", self.compteur));
if ui.button("+").clicked() {
self.compteur += 1;
}
});
});
}
}Executez avec cargo run et vous avez votre premiere application desktop fonctionnelle!
Faut-il etre expert en Rust pour suivre ce livre ?
Non. Il faut connaitre les bases (variables, fonctions, structs, enums, pattern matching), mais le livre explique en detail les concepts avances comme l'ownership, l'async et les lifetimes dans le contexte du developpement desktop. La Partie II est specialement concue pour cela.
Pourquoi egui plutot que Tauri, iced ou Dioxus ?
egui offre le meilleur equilibre entre simplicite, performance et controle pour du desktop natif pur. Pas de WebView, pas de JavaScript, pas de HTML/CSS. Le Chapitre 8 compare en detail tous les frameworks pour vous aider a choisir selon votre contexte. Les principes d'architecture (Parties IV-VII) sont applicables quel que soit le framework.
Le code est-il disponible quelque part ?
Chaque chapitre contient du code complet et fonctionnel. Le Chapitre 24 (NoteVault) est un cas d'etude complet de A a Z avec tout le code source. L'Annexe A fournit un Cargo.toml complet pret a copier-coller.
Ce livre couvre-t-il le deploiement multiplateforme ?
Oui. Le Chapitre 27 couvre en detail le packaging pour Windows (MSI via cargo-wix), macOS (DMG + notarization) et Linux (AppImage, .deb, Flatpak), ainsi que les mises a jour automatiques.
Peut-on utiliser ce livre pour un projet commercial ?
Absolument. C'est meme l'un des objectifs principaux. La Partie VII couvre les licences, la distribution, le marketing, la monetisation et la vision long terme. Le livre est concu pour vous amener jusqu'au premier client.
Quelles versions de Rust sont supportees ?
Le livre cible Rust 2021 Edition et toutes les versions stables recentes. Les dependances sont specifiees avec versions dans l'Annexe A.
Ce livre est publie sous licence MIT. Vous etes libre de l'utiliser, le modifier et le distribuer.
Pret a maitriser le developpement desktop en Rust ?
#