Arbeiten mit Markdown in Rust: Bibliotheken und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Markdown in Rust: Überblick über Werkzeuge und Bibliotheken



Rust, bekannt für seine Leistung und Sicherheit, bietet mehrere ausgereifte Bibliotheken für die Arbeit mit Markdown. Unabhängig davon, ob Sie einen statischen Website-Generator, einen Chatbot, ein Dokumentationssystem oder einen Notiz-Editor erstellen, die richtige Wahl des Werkzeugs spart Entwicklungsstunden. In diesem Artikel betrachten wir die drei wichtigsten Bibliotheken: pulldown-cmark, markdown und comrak, und zeigen praktische Beispiele für deren Verwendung.



1. pulldown-cmark — ereignisgesteuerter Parser



pulldown-cmark ist die beliebteste und schnellste Bibliothek zum Parsen von Markdown in Rust. Sie implementiert die CommonMark-Spezifikation und arbeitet nach dem „Pull"-Prinzip: Sie erhalten einen Strom von Ereignissen (Tags, Text, Links), die Sie direkt verarbeiten oder in HTML umwandeln können.



Hauptfunktionen:

  • Vollständige Unterstützung von CommonMark 0.30
  • Minimaler Speicherverbrauch
  • Unterstützung für Tabellen, durchgestrichenen Text, Autolinks
  • Anpassungsmöglichkeit durch Ereignisverarbeitung
  • Arbeit ohne Allokationen (Zero-Copy-Parsing)


Beispiel für Parsing und Rendering in HTML:

use pulldown_cmark::{Parser, html};

fn main() { let markdown_input = "# Hallo, Welt!

Dies ist **fetter** Text und *kursiver* Text."; let parser = Parser::new(markdown_input); let mut html_output = String::new(); html::push_html(&mut html_output, parser); println!("{}", html_output);}


Das Ergebnis ist korrektes HTML mit den Tags <h1>, <strong> und <em>. Die Bibliothek ist ideal für hochbelastete Systeme, bei denen Geschwindigkeit wichtig ist.



2. markdown (crate) — universeller Konverter



Die Bibliothek markdown (Crate markdown) bietet sowohl Parsing als auch Konvertierung in verschiedene Formate. Im Gegensatz zu pulldown-cmark bietet sie eine höherwertige API und zusätzliche Ausgabeoptionen.



Wesentliche Merkmale:

  • Unterstützung von CommonMark und GitHub Flavored Markdown (GFM)
  • Rendering in HTML, LaTeX, Terminal
  • Erweiterbare Architektur mit Plugins
  • Integrierte Unterstützung für HTML-Sanitisierung
  • Arbeit mit YAML-Front-Matter-Metadaten


Beispiel mit Konfiguration:

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

fn main() { let md = "## Rust-Code```rustfn main() { println!(\\"Hallo\\");}```"; 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);}


Dieses Beispiel demonstriert sicheres Rendering von Code mit Syntax-Highlighting (wenn eine zusätzliche Crate eingebunden wird). markdown wird für Projekte empfohlen, die Flexibilität und Unterstützung für nicht standardmäßige Ausgabeformate benötigen.



3. comrak — erweiterter Parser für GFM



comrak ist ein Fork des beliebten Parsers cmark mit zusätzlichen GitHub-Erweiterungen. Es ist die beste Wahl, wenn Ihr Projekt eine genaue Übereinstimmung mit GitHub-Markdown erfordert, einschließlich Escaping, Aufgabenlisten und Emojis.



Funktionen von comrak:

  • Vollständige Unterstützung von GFM (Tabellen, Durchstreichungen, Autolinks)
  • Erweiterungen: LaTeX-Syntax, mathematische Formeln
  • Anpassbare HTML-Sanitisierung
  • Unterstützung für benutzerdefinierte Renderer
  • Export in einen abstrakten Syntaxbaum (AST)

Empfehlungen