在 Rust 中使用 Markdown:库与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 Rust 中使用 Markdown:工具与库概览



Rust 以其高性能和安全性著称,提供了多个成熟的 Markdown 处理库。无论您是在构建静态网站生成器、聊天机器人、文档系统还是笔记编辑器,选择合适的工具都能节省数小时的开发时间。本文将介绍三个核心库:pulldown-cmark、markdown 和 comrak,并展示它们的实际使用示例。



1. pulldown-cmark — 事件驱动解析器



pulldown-cmark 是 Rust 中最流行且最快的 Markdown 解析库。它实现了 CommonMark 规范,并采用“拉取”模式工作:您会获得一个事件流(标签、文本、链接),可以直接处理或转换为 HTML。



主要特性:

  • 完全支持 CommonMark 0.30
  • 内存占用极低
  • 支持表格、删除线、自动链接
  • 可通过事件处理进行自定义
  • 零拷贝解析


解析并渲染为 HTML 的示例:

use pulldown_cmark::{Parser, html};

fn main() { let markdown_input = "# 你好,世界!

这是**粗体**文本和*斜体*。"; let parser = Parser::new(markdown_input); let mut html_output = String::new(); html::push_html(&mut html_output, parser); println!("{}", html_output);}


执行结果将是包含 <h1>、<strong> 和 <em> 标签的正确 HTML。该库非常适合对速度有高要求的高负载系统。



2. markdown (crate) — 通用转换器



markdown 库(crate markdown)既提供解析功能,也支持转换为多种格式。与 pulldown-cmark 不同,它提供了更高级的 API 和额外的输出选项。



关键特性:

  • 支持 CommonMark 和 GitHub Flavored Markdown (GFM)
  • 可渲染为 HTML、LaTeX、终端
  • 可扩展的插件架构
  • 内置 HTML 清理功能
  • 支持 YAML 前置元数据


带配置的示例:

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

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


此示例演示了安全的代码渲染(如果连接了额外的 crate,还可支持语法高亮)。对于需要灵活性和支持非标准输出格式的项目,推荐使用 markdown。



3. comrak — 用于 GFM 的扩展解析器



comrak 是流行解析器 cmark 的一个分支,并增加了 GitHub 的扩展功能。如果您的项目需要精确匹配 GitHub 的 Markdown(包括转义、任务列表和表情符号),这是最佳选择。



comrak 的功能:

  • 完全支持 GFM(表格、删除线、自动链接)
  • 扩展功能:LaTeX 语法、数学公式
  • 可配置的 HTML 清理
  • 支持自定义渲染器
  • 可导出为抽象语法树 (AST)
  • \

推荐