Rustdoc: Asciidoctor vs Markdown

I’m very interested in markup languages (aka wiki-like syntaxes). Few years ago I’ve reviewed all of the existing syntaxes and found out AsciiDoc to be the best one for use cases more complex than simple comment on a blog. Sure, it’s not perfect, but I’m convinced that it’s better than all existing alternatives.

It’s widely used for writing technical documentation (e.g. Git, Spring projects, Fedora projects) and also books (e.g. O’Reilly Atlas publishing platform is based on AsciiDoc(tor)). The syntax is simple to understand and use (even for non-technical writers), comprehensive and extensible. Ecosystem around AsciiDoc is quite rich and mature. Asciidoctor runs on Ruby, JavaScript (very important for live preview on web) and JVM. There’s also a legacy AsciiDoc toolchain written in Python.

reStructuredText is very different… compared to anything. It’s really non-intuitive (e.g. links and references), hard to grasp and remember. In my opinion, it’s the worst wiki-like syntax ever made. Just look at some examples and compare with current version of AsciiDoc and also other syntaxes. It’s widely used more or less only in Python world.


Someone mentioned indentation, that RST is easier to read, because it’s indentation-based. It’s true that the delimited blocks in AsciiDoc currently cannot be indented. However, this might be changed (and I hope that it’ll be) and it’s only a trivial change in the syntax. Then you can (not must) indent markup as you wish, for a better readability.


It may be a problem for Rust that AsciiDoc (and even RST) toolchain needs some runtime (Ruby, JS or JVM), there’s no parser written in Rust or C. I’d like to say that I would love to write AsciiDoc parser in Rust (and I’m able to do it)!

3 Likes