Trabalhando com Markdown em Rust: bibliotecas 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 de ferramentas e bibliotecas



Rust, conhecido por seu desempenho e segurança, oferece várias bibliotecas maduras para trabalhar com Markdown. Independentemente de você estar criando um gerador de sites estáticos, um chatbot, um sistema de documentação ou um editor de notas, a escolha correta da ferramenta economizará horas de desenvolvimento. Neste artigo, analisaremos três bibliotecas principais: pulldown-cmark, markdown e comrak, além de mostrar exemplos práticos de seu uso.



1. pulldown-cmark — parser orientado a eventos



pulldown-cmark é a biblioteca mais popular e rápida para parsing de Markdown em Rust. Ela implementa a especificação CommonMark e funciona com base no princípio "pull": você recebe um fluxo de eventos (tags, texto, links) que pode ser processado diretamente ou convertido em HTML.



Principais recursos:

  • Suporte completo ao CommonMark 0.30
  • Consumo mínimo de memória
  • Suporte a tabelas, texto tachado, links automáticos
  • Possibilidade de personalização através do processamento de eventos
  • Operação sem alocações (parsing zero-copy)


Exemplo de parsing e renderização em HTML:

use pulldown_cmark::{Parser, html};

fn main() { let markdown_input = "# Olá, mundo!

Este é um texto **negrito** e *itálico*."; let parser = Parser::new(markdown_input); let mut html_output = String::new(); html::push_html(&mut html_output, parser); println!("{}", html_output);}


O resultado da execução é HTML correto com as tags <h1>, <strong> e <em>. A biblioteca é ideal para sistemas de alta carga onde a velocidade é importante.



2. markdown (crate) — conversor universal



A biblioteca markdown (crate markdown) oferece tanto parsing quanto conversão para vários formatos. Ao contrário do pulldown-cmark, ela fornece uma API de nível mais alto e opções de saída adicionais.



Principais características:

  • Suporte a CommonMark e GitHub Flavored Markdown (GFM)
  • Renderização em HTML, LaTeX, terminal
  • Arquitetura extensível com plugins
  • Suporte integrado para sanitização de HTML
  • Trabalho com metadados YAML front matter


Exemplo com configuração:

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

fn main() { let md = "## Código em 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);}


Este exemplo demonstra a renderização segura de código com destaque de sintaxe (se um crate adicional for conectado). markdown é recomendado para projetos que exigem flexibilidade e suporte a formatos de saída não padrão.



3. comrak — parser estendido para GFM



comrak é um fork do popular parser cmark com extensões adicionais do GitHub. É a melhor escolha se o seu projeto exigir conformidade exata com o Markdown do GitHub, incluindo escape, listas de tarefas e emojis.



Recursos do comrak:

  • Suporte completo a GFM (tabelas, tachado, links automáticos)
  • Extensões: sintaxe LaTeX, fórmulas matemáticas
  • Sanitização de HTML configurável
  • Suporte a renderizadores personalizados
  • Exportação para árvore sintática abstrata (AST)
  • \

Recommendations