-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: Links to Rust items in documentation text #9864
Comments
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 |
Visiting for triage. Still relevant, still not super easy to implement. |
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 |
(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:
use
proposal below doesn't work withuse Trait::static_method
or 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.
The text was updated successfully, but these errors were encountered: