I’d much rather see rustdoc plugins function like Just Another Dependency, just like rustc plugins do. You’d add the markup processor as a dev-dependency (you shouldn’t need it to build the code), then use a #[doc(markup="rst")] annotation. I’m not a fan of blunt, global switches; it makes it harder to change existing code to use a different markup, or integrate code from another source (or perhaps even just another author). If incremental conversion can be enabled, I think it’s worth aiming for.
Simplest-to-implement with that property would be to require it on every item being documented (with the existing hoedown processor perhaps aliased as one of rustdoc, hoedown, or legacy). Simpler-to-use would be to make the annotation “stick” to child items (i.e. set it on a module, and all the things inside of it get the same processor by default).
I actually started poking around using external processes (named rustdoc-mp-X), but abandoned that when I realised that "cargo install and check PATH" would be utterly lousy for (flogs self for using a term he hates) UX. Plus, it seemed like it’d be a hassle for docs.rs, and I do not want anything that would make docs.rs harder to operate. I got rather discouraged at that point, because that was when I realised I’d have to modify Cargo, and the last time I went there I didn’t have any fun whatsoever.
Aside: while I definitely want reStructuredText, I also feel like using a markup processor shouldn’t affect build times for dependencies at all, nor should it blow out doc generation times too much, or require users to contort their system configuration. I think any such change should come with a very strong community expectation that you do not depend on external binaries or libraries that might not be available, or aren’t easy to build automatically on all platforms.
In other words, someone’s gonna have to re-implement rST in Rust 