Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upRFC: Links to Rust items in documentation text #9864
Comments
This comment has been minimized.
This comment has been minimized.
|
Notable also is that Sphinx is not just Sphinx cross-references also have the ability to control what is displayed; following the normal Sphinx conventions:
I've said it before in relatively-private, and I'll say it again here: I believe strongly that using reStructuredText and Sphinx would be a better plan than using the Markdown systems currently in place. Partly, this is because of my very strong belief that reStructuredText is the distinctly superior language (it's actually designed with this sort of extensibility in mind, whereas Markdown is just a tangled mess, lousily specified), and partly because constraining ourselves to purely automatically generated documentation is manifestly a bad plan, yet that seems to be the direction rustdoc is heading at present (I would love to be wrong on this point—tell me I am!). Writing custom documentation is very important; the Django docs (incidentally managed with Sphinx) are a very good example. (Sphinx would also provide the tools for producing the entirely automated API documentation which would, of course, still be desirable.) For the next few weeks I don't have time, but I'm certainly interested in writing a Rust domain for Sphinx to demonstrate why it's better. reStructuredText is also good for this customisability as it makes it buttery-smooth to make more syntax extensions, e.g. you could trivially add a role to make links to GitHub issues like |
cmr
added
I-enhancement
and removed
B-RFC
labels
Apr 7, 2014
This comment has been minimized.
This comment has been minimized.
|
Visiting for triage. Still relevant, still not super easy to implement. |
steveklabnik
referenced this issue
Feb 2, 2015
Closed
RFC: Links to Rust items in documentation text #792
This comment has been minimized.
This comment has been minimized.
|
I'm pulling a massive triage effort to get us ready for 1.0. As part of this, I'm moving stuff that's wishlist-like to the RFCs repo, as that's where major new things should get discussed/prioritized. This issue has been moved to the RFCs repo: rust-lang/rfcs#792 |
huonw commentedOct 15, 2013
(The syntax should be decided on.
<<<>>>is just a bad-by-design placeholder so that it gets changed.)The text in
<<<...>>>would be interpreted as a module-relative path (unless prefixed by::which makes it crate-relative), since I imagine intra-module links are the most common. And each<<<foo::bar>>>would get replaced by either[bar](rustdoc generated link)or[foo::bar](rustdoc generated link)or something (possibly/preferably linking each component of the path in the latter case).Issues
I'm very unsure about:
useproposal below doesn't work withuse Trait::static_methodor with types either);<<<foo.method>>>and fields<<<foo.field>>>.Other tools
'Foo.Bar':py:mod:foo``{@link #foo(type, type)}{text here][rdoc-ref:Foo::Bar](These aren't necessarily correct, and I'm sure there are many many more possible syntaxes.)
Implementation
One possibility for implementation by rustdoc just throwing the contents of each
<<<>>>into a use statement in the current module like (from the top of the example above):where
unique_name_...would be designed in so that it can never occur in user code (e.g. containing non-ident characters). After running resolve, rustdoc could go in an extract the value of each name. Notably, the optional.<ident>gets stripped, and has to be extracted by the rustdoc code itself, and this would also mean that documentation could result in a compile error if any of these links doesn't resolve properly (which is quite sensible IMO).A nicer method would be if resolve could be queried for individual items after running as a whole.