Travailler avec Markdown en Rust : bibliothèques et outils

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Markdown en Rust : aperçu des outils et bibliothèques



Rust, connu pour ses performances et sa sécurité, propose plusieurs bibliothèques matures pour travailler avec Markdown. Que vous créiez un générateur de sites statiques, un chatbot, un système de documentation ou un éditeur de notes, le bon choix d'outil vous fera gagner des heures de développement. Dans cet article, nous analyserons trois bibliothèques principales : pulldown-cmark, markdown et comrak, et montrerons des exemples pratiques de leur utilisation.



1. pulldown-cmark — un parseur orienté événements



pulldown-cmark est la bibliothèque la plus populaire et la plus rapide pour le parsing Markdown en Rust. Elle implémente la spécification CommonMark et fonctionne selon le principe « pull » : vous obtenez un flux d'événements (balises, texte, liens) que vous pouvez traiter directement ou convertir en HTML.



Fonctionnalités principales :

  • Support complet de CommonMark 0.30
  • Consommation mémoire minimale
  • Support des tableaux, du texte barré, des liens automatiques
  • Personnalisation possible via le traitement des événements
  • Fonctionnement sans allocations (parsing zero-copy)


Exemple de parsing et de rendu en HTML :

use pulldown_cmark::{Parser, html};

fn main() { let markdown_input = "# Bonjour le monde !

Ceci est du texte **gras** et *italique*."; let parser = Parser::new(markdown_input); let mut html_output = String::new(); html::push_html(&mut html_output, parser); println!("{}", html_output);}


Le résultat est un HTML correct avec les balises <h1>, <strong> et <em>. Cette bibliothèque est idéale pour les systèmes à forte charge où la vitesse est importante.



2. markdown (crate) — un convertisseur universel



La bibliothèque markdown (crate markdown) propose à la fois le parsing et la conversion vers différents formats. Contrairement à pulldown-cmark, elle offre une API de plus haut niveau et des options de sortie supplémentaires.



Caractéristiques clés :

  • Support de CommonMark et de GitHub Flavored Markdown (GFM)
  • Rendu en HTML, LaTeX, terminal
  • Architecture extensible avec plugins
  • Support intégré de l'assainissement HTML
  • Traitement des métadonnées YAML front matter


Exemple avec configuration :

use markdown::to_html_with_options;use markdown::Options;

fn main() { let md = "## Code en Rust```rustfn main() { println!(\\"Hello\\");}```"; let opts = Options { compile: markdown::CompileOptions { allow_dangerous_html: false, allow_dangerous_protocol: false, ..markdown::CompileOptions::default() }, ..markdown::Options::default() }; let html = to_html_with_options(md, &opts).unwrap(); println!("{}", html);}


Cet exemple montre un rendu sécurisé du code avec coloration syntaxique (si un crate supplémentaire est ajouté). markdown est recommandé pour les projets nécessitant de la flexibilité et la prise en charge de formats de sortie non standard.



3. comrak — un parseur avancé pour GFM



comrak est un fork du parseur populaire cmark avec des extensions supplémentaires de GitHub. C'est le meilleur choix si votre projet nécessite une conformité précise avec le Markdown de GitHub, y compris l'échappement, les listes de tâches et les emojis.



Fonctionnalités de comrak :

  • Support complet de GFM (tableaux, barré, liens automatiques)
  • Extensions : syntaxe LaTeX, formules mathématiques
  • Assainissement HTML configurable
  • Support de rendus personnalisés
  • Export en arbre syntaxique abstrait (AST)
  • \

Recommendations