Processamento de Markdown em Rust: bibliotecas, parsers e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Markdown em Rust: visão geral das principais bibliotecas

\n\n

A linguagem Rust fornece ferramentas poderosas e seguras para processamento de dados textuais, incluindo parsing e renderização de Markdown. Graças à tipagem forte, ausência de coletor de lixo e alta performance, as bibliotecas para trabalhar com Markdown em Rust são ideais para criar sites estáticos, documentação, blogs, sistemas de chat e qualquer aplicação que exija conversão de Markdown para HTML ou outros formatos. Neste artigo, veremos as três ferramentas mais populares: pulldown-cmark, comrak e o oficial markdown crate.

\n\n

1. pulldown-cmark — parser orientado a eventos

\n\n

pulldown-cmark é a biblioteca mais popular e performática para parsing de Markdown em Rust. Ela é construída em um modelo orientado a eventos (pull parser), permitindo processar documentos de forma contínua, sem construir uma AST completa em memória. Isso a torna ideal para arquivos grandes e aplicações com recursos limitados.

\n\n

A biblioteca segue a especificação CommonMark e suporta todos os elementos principais: cabeçalhos, listas, código, tabelas, links, imagens e escape.

\n\n
// Exemplo de parsing de Markdown para HTML com pulldown-cmark\nuse pulldown_cmark::{Parser, Options, html};\n\nlet markdown_input = "# Olá, mundo!\\n\\nIsso é **texto em negrito** e *itálico*.";\nlet mut options = Options::empty();\noptions.insert(Options::ENABLE_TABLES);\noptions.insert(Options::ENABLE_FOOTNOTES);\n\nlet parser = Parser::new_ext(&markdown_input, options);\nlet mut html_output = String::new();\nhtml::push_html(&mut html_output, parser);\n\nprintln!("{}", html_output);\n// Saída: <h1>Olá, mundo!</h1>\n// <p>Isso é <strong>texto em negrito</strong> e <em>itálico</em>.</p>
\n\n

Características do pulldown-cmark:

\n
    \n
  • Consumo mínimo de memória — parsing sem AST.
  • \n
  • Suporte a extensões: tabelas, notas de rodapé, tachado, links automáticos de URL.
  • \n
  • Suporte completo ao CommonMark 0.31.2.
  • \n
  • Possibilidade de processamento personalizado de eventos (por exemplo, para realce de sintaxe).
  • \n
\n\n

2. comrak — parser extensível com suporte a GFM

\n\n

Comrak é um fork da popular biblioteca JavaScript cmark-gfm, portado para Rust. Ele oferece compatibilidade total com o GitHub Flavored Markdown (GFM), incluindo extensões como listas de tarefas, tabelas, tachado, links automáticos e escape de HTML.

\n\n

O Comrak fornece uma API flexível com a possibilidade de configurar o parser através da estrutura ComrakOptions. Você pode ativar ou desativar extensões individuais, definir a largura da tabulação, permitir ou proibir certas tags HTML.

\n\n
// Exemplo de uso do comrak para converter Markdown em HTML\nuse comrak::{markdown_to_html, ComrakOptions};\n\nlet markdown = "## Lista de tarefas\\n\\n- [x] Fazer lição de casa\\n- [ ] Comprar mantimentos\\n\\n```rust\\nfn main() {\\n    println!(\\"Hello\\");\\n}\\n```";\n\nlet options = ComrakOptions::default();\nlet html = markdown_to_html(markdown, &options);\n\nprintln!("{}", html);\n// Saída inclui: cabeçalho, caixas de seleção, bloco de código com realce
\n\n

Vantagens do comrak:

\n
    \n
  • Suporte completo a GFM (GitHub Flavored Markdown).
  • \n
  • Segurança configurável: escape de tags HTML perigosas.
  • \n
  • Suporte a blocos de código aninhados, fórmulas matemáticas (através de extensões).
  • \n
  • Alta velocidade de operação, comparável ao pulldown-cmark.
  • \n
\n\n

3. markdown crate — parser simples e leve

\n\n

O oficial markdown crate (crate markdown) é uma biblioteca minimalista que implementa a especificação básica do Markdown. Ela não suporta extensões e tabelas, mas é perfeita para tarefas simples onde é necessária apenas a conversão

Recommendations