-
Notifications
You must be signed in to change notification settings - Fork 1.6k
RFC: Links to Rust items in documentation text #792
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
I'd be interested in seeing this RFC get some more activity, now that 1.0 is far behind us. I hope it's okay to resurrect old RFCs like this. This is my first time, so I apologize if this is not the way to go. Regarding the placeholder syntax. Perhaps overloading normal Markdown links is the way to go, as to not introduce anything non-standard to the Markdown syntax? One could attach special meaning to a new See [`FooEnum`](ref:FooEnum)'s [`Bar`][bar] variant.
[bar]: ref:FooEnum::Bar If this is too much work for references, perhaps a shortcut could be made like this: See [`FooEnum`]'s [`Bar`][FooEnum::Bar] variant. where the compiler would auto-insert references to links with backticks on them, resulting in the following complete markdown: See [`FooEnum`]'s [`Bar`][FooEnum::Bar] variant.
[FooEnum]: ref:FooEnum
[FooEnum::Bar]: ref:FooEnum::Bar I personally think that would be a bad idea for a first go at this as it might paint us into a corner later, but putting it out there anyway. |
Thank you. I didn't realize that this wasn't the newest RFC on the matter. I see that #1946 is merged now. Does that mean that this RFC should be closed? |
Yep, I believe it should be! |
Tuesday Oct 15, 2013 at 07:57 GMT
For earlier discussion, see rust-lang/rust#9864
This issue was labelled with: A-rustdoc, I-enhancement in the Rust repository
(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: