RustでMarkdownのHTML変換を試してみる

はじめに

この記事では、「RustでMarkdownをHTMLへ変換する方法と実際に試してみた記録」について書いています。

Rustの勉強の一環として色々なcrateを触ってみようと思い、今回はMarkdownをHTMLへ変換するということをテーマに調べてみました。

自分に向けた備忘録の意味もありますが、「RustでMarkdownをHTMLに変換する処理を行いたい」な人の一助になれば嬉しいです。

要点だけ

  • MarkdownのHTML変換ではpulldown-cmarkというcrateを使うのが良さそう&簡単

前提(環境)

私の環境のバージョン情報は以下の通りです。

手順

MarkdownのHTML変換について、何か良いcrateが無いか調べていましたが、どうやらpulldown-cmarkというcrateが一番ダウンロード数が多かくて良さそうなのでそれを使うことにしました。

この記事を作成した時点のpulldown-cmarkの最新は0.9.2のようなので、そちらを使ってMarkdownをHTMLに変換を試みてみたいと思います。

コマンドプロンプトからcargo new md2htmlで新しいプロジェクトを作成し、main.rsは以下のように記述しました。

use pulldown_cmark::{html, Parser};

fn main() {
    let markdown_input = "\
# Title

Hello **world!!**";
    println!("--- markdown_input ---\n{}\n------\n", markdown_input);

    let parser = Parser::new(markdown_input);
    let mut html_output = String::new();
    html::push_html(&mut html_output, parser);
    println!("--- html_output ---\n{}\n------\n", html_output);
}

markdownで記述されてる文字列の変数を用意し、それをhtmlに変換してます。

さて、(Cargo.tomlにpulldown-cmarkの記述を追加して、)cargo run`をしてみると、結果は以下のようになります。

--- markdown_input ---
# Title

Hello **world!!**
------

--- html_output ---
<h1>Title</h1>
<p>Hello <strong>world!!</strong></p>

------


ちゃんとmarkdownの記述がhtmlに変換されているようです。

おわりに

「RustでMarkdownをHTMLへ変換する方法と実際に試してみた記録」について解説しました。

このcrateを活用して、オレオレmarkdwon2HTMLツールを作ってみるのも良いかもしれませんね。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

blog.himanoa.net