Skip to content

Commit

Permalink
Clarify disambiguation rules
Browse files Browse the repository at this point in the history
  • Loading branch information
Manishearth committed Jan 10, 2018
1 parent be38090 commit cb8206a
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions text/1946-intra-rustdoc-links.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,14 @@ To be able to link to each item,
we'll need a way to disambiguate the namespaces.
Our proposal is this:

- Links to types are written as described earlier,
with no pre- or suffix,
e.g., `Look at the [FOO] trait`.
For consistency,
it is also possible to prefix the type with the concrete item type:
- In unambiguous cases paths can be written as described earlier,
with no pre- or suffix, e.g., `Look at the [FOO] trait`. This also
applies to modules and tuple structs which exist in both namespaces.
Rustdoc will throw an error if you use a non-disambiguated path in
the case of there being a value in both the type and value namespace.
Non-disambiguated paths cannot be used to link to macros.
- Links to types can be disambiguated by prefixing them with the concrete
item type:
- Links to `struct`s can be prefixed with `struct `,
e.g., `See [struct@Foo]`.
- Links to `enum`s can be prefixed with `enum `,
Expand All @@ -298,10 +301,10 @@ Our proposal is this:
- Links to modules can be prefixed with `mod `,
e.g., `See [mod@foo]`.
- In links to macros,
the link label must end with a `!`,
the link label _must_ end with a `!`,
e.g., `Look at the [FOO!] macro`.
- For links to values, we differentiate three cases:
- Links to functions are written with a `()` suffix,
- For disambiguating links to values, we differentiate three cases:
- Links to functions can be written with a `()` suffix,
e.g., `Also see the [foo()] function`.
- Links to constants are prefixed with `const `,
e.g., `As defined in [const@FOO].`
Expand All @@ -317,6 +320,7 @@ with the wrong prefix that is in the same namespace.
E.g., given an `struct Foo`, it may be possible to link to it using `[enum Foo]`,
or, given a `mod bar`, it may be possible to link to that using `[struct bar]`.

In case a type is in

## Errors
[errors]: #errors
Expand Down

0 comments on commit cb8206a

Please sign in to comment.