Jacob Pratt
5742e2255e
Rollup merge of #132871 - lolbinarycat:rustdoc-heterogeneous-first-paragraph-85763, r=aDotInTheVoid
...
add regression test for #85763
closes #85763
2024-11-10 19:12:26 -05:00
binarycat
93ea5bb709
add regression test for #85763
2024-11-10 13:38:41 -06:00
Matthias Krüger
5f58dc9ebd
Rollup merge of #132744 - lolbinarycat:test-90781, r=aDotInTheVoid
...
add regression test for #90781
closes #90781
2024-11-09 19:16:44 +01:00
Ralf Jung
e3010e84db
remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead
2024-11-08 09:16:00 +01:00
binarycat
90fa5b608d
add regression test for #90781
2024-11-07 14:23:53 -06:00
Michael Goulet
7d8ca6d4fc
Clean middle generics using paren sugar if trait has rustc_paren_sugar
2024-11-06 15:50:50 +00:00
Ralf Jung
10723c2896
remove support for extern-block const intrinsics
2024-11-04 23:27:45 +01:00
Michael Goulet
6b96103bf3
Rename the FIXMEs, remove a few that dont matter anymore
2024-11-03 18:59:41 +00:00
Michael Goulet
0b5ddf30eb
Yeet effects feature
2024-11-03 18:59:31 +00:00
Lukas Markeffsky
728315df79
rustdoc: skip stability inheritance for some item kinds
2024-11-02 00:31:32 +01:00
Ralf Jung
a0215d8e46
Re-do recursive const stability checks
...
Fundamentally, we have *three* disjoint categories of functions:
1. const-stable functions
2. private/unstable functions that are meant to be callable from const-stable functions
3. functions that can make use of unstable const features
This PR implements the following system:
- `#[rustc_const_stable]` puts functions in the first category. It may only be applied to `#[stable]` functions.
- `#[rustc_const_unstable]` by default puts functions in the third category. The new attribute `#[rustc_const_stable_indirect]` can be added to such a function to move it into the second category.
- `const fn` without a const stability marker are in the second category if they are still unstable. They automatically inherit the feature gate for regular calls, it can now also be used for const-calls.
Also, several holes in recursive const stability checking are being closed.
There's still one potential hole that is hard to avoid, which is when MIR
building automatically inserts calls to a particular function in stable
functions -- which happens in the panic machinery. Those need to *not* be
`rustc_const_unstable` (or manually get a `rustc_const_stable_indirect`) to be
sure they follow recursive const stability. But that's a fairly rare and special
case so IMO it's fine.
The net effect of this is that a `#[unstable]` or unmarked function can be
constified simply by marking it as `const fn`, and it will then be
const-callable from stable `const fn` and subject to recursive const stability
requirements. If it is publicly reachable (which implies it cannot be unmarked),
it will be const-unstable under the same feature gate. Only if the function ever
becomes `#[stable]` does it need a `#[rustc_const_unstable]` or
`#[rustc_const_stable]` marker to decide if this should also imply
const-stability.
Adding `#[rustc_const_unstable]` is only needed for (a) functions that need to
use unstable const lang features (including intrinsics), or (b) `#[stable]`
functions that are not yet intended to be const-stable. Adding
`#[rustc_const_stable]` is only needed for functions that are actually meant to
be directly callable from stable const code. `#[rustc_const_stable_indirect]` is
used to mark intrinsics as const-callable and for `#[rustc_const_unstable]`
functions that are actually called from other, exposed-on-stable `const fn`. No
other attributes are required.
2024-10-25 20:31:40 +02:00
Jubilee
3549dbb149
Rollup merge of #132115 - bash:rustdoc-fake-variadic-wrapper, r=GuillaumeGomez,notriddle
...
rustdoc: Extend fake_variadic to "wrapped" tuples
This allows impls such as `impl QueryData for OneOf<(T,)>` to be displayed as variadic: `impl QueryData for OneOf<(T₁, T₂, …, Tₙ)>`.
See question on [zulip](https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/Make.20.60.23.5Bdoc.28fake_variadic.29.5D.60.20more.20useful ).
2024-10-24 15:53:36 -07:00
Tau Gärtli
4e48768908
rustdoc: Extend fake_variadic to "wrapped" tuples
...
This allows impls such as `impl QueryData for OneOf<(T,)>`
to be displayed as variadic: `impl QueryData for OneOf<(T₁, T₂, …, Tₙ)>`.
See question on zulip:
<https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/Make.20.60.23.5Bdoc.28fake_variadic.29.5D.60.20more.20useful >
2024-10-24 18:50:55 +02:00
bors
f61306d47b
Auto merge of #123550 - GnomedDev:remove-initial-arc, r=Noratrieb
...
Remove the `Arc` rt::init allocation for thread info
Removes an allocation pre-main by just not storing anything in std:🧵 :Thread for the main thread.
- The thread name can just be a hard coded literal, as was done in #123433 .
- Storing ThreadId and Parker in a static that is initialized once at startup. This uses SyncUnsafeCell and MaybeUninit as this is quite performance critical and we don't need synchronization or to store a tag value and possibly leave in a panic.
2024-10-24 13:35:50 +00:00
Matthias Krüger
96558580ac
Rollup merge of #131906 - notriddle:notriddle/spacing, r=GuillaumeGomez
...
rustdoc: adjust spacing and typography in header
Fixes #131589
Preview: https://notriddle.com/rustdoc-html-demo-12/spacing/std/index.html
| Before | After |
|--|--|
| ![image](https://github.com/user-attachments/assets/b5c5132d-1e5e-402e-ba19-1dea9e70ea6f ) | ![image](https://github.com/user-attachments/assets/72570b93-bb16-4553-9da7-fc4f29b98873 )
| ![image](https://github.com/user-attachments/assets/264983f0-5aec-4120-8a03-f62e52d4360d ) | ![image](https://github.com/user-attachments/assets/b6925945-95e6-4858-8e91-4cfd90c164f0 )
| ![image](https://github.com/user-attachments/assets/df96bfe7-195d-4aaf-97f1-a45ade34cab2 ) | ![image](https://github.com/user-attachments/assets/c6fe2d57-bd8a-42aa-b3cf-4f635809b9b4 )
| ![image](https://github.com/user-attachments/assets/7519faa5-d6b2-41ba-9d95-6000d1dd89d1 ) | ![image](https://github.com/user-attachments/assets/7233c2d6-82d9-4820-bb63-dc4776a34601 )
First of all, we put 4px additional margin below the search box, and 4px margin below the header to balance it out.
The bigger problem we have to solve is making the lines look logically spaced. This is troublesome, because Fira Sans (the typeface we use here) wants to look good on average, and to avoid breaking, with text that uses [ascenders and descenders](https://www.w3.org/TR/css-inline-3/images/text-edge.png ). If the text we're putting in happens to not have any, things look weird (strictly speaking, there’s hand-tuning here, because the Copy Path button messes with stuff, but the overall point is that there is no true, one perfect layout).
In order to play nicely with the font, I've tweaked the text to use that space. The word "Source" for the link is now capitalized, and the Since version number now uses oldstyle nums with descenders.
2024-10-24 10:35:39 +02:00
Michael Howell
a53655a023
rustdoc: adjust spacing and typography in header
2024-10-23 19:15:23 -04:00
GnomedDev
0747f2898e
Remove the Arc rt::init allocation for thread info
2024-10-19 14:39:20 +01:00
Michael Goulet
8ff8f78e4c
Dont consider predicates that may hold as impossible in is_impossible_associated_item
2024-10-17 12:32:31 -04:00
bors
798fb83f7d
Auto merge of #131797 - matthiaskrgr:rollup-lzpze2k, r=matthiaskrgr
...
Rollup of 9 pull requests
Successful merges:
- #130989 (Don't check unsize goal in MIR validation when opaques remain)
- #131657 (Rustfmt `for<'a> async` correctly)
- #131691 (Delay ambiguous intra-doc link resolution after `Cache` has been populated)
- #131730 (Refactor some `core::fmt` macros)
- #131751 (Rename `can_coerce` to `may_coerce`, and then structurally resolve correctly in the probe)
- #131753 (Unify `secondary_span` and `swap_secondary_and_primary` args in `note_type_err`)
- #131776 (Emscripten: Xfail backtrace ui tests)
- #131777 (Fix trivially_copy_pass_by_ref in stable_mir)
- #131778 (Fix needless_lifetimes in stable_mir)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-16 20:50:53 +00:00
León Orell Valerian Liehr
6d82559bc1
rustdoc: Rename "object safe" to "dyn compatible"
2024-10-16 15:53:49 +02:00
Guillaume Gomez
d540e7285c
Add regression tests for #130233
2024-10-14 17:51:37 +02:00
bors
07f08ffb2d
Auto merge of #131076 - lukas-code:doc-stab2, r=notriddle
...
rustdoc: rewrite stability inheritance as a doc pass
Since doc inlining can almost arbitrarily change the module hierarchy, we can't just use the HIR ancestors of an item to compute its effective stability. This PR moves the stability inheritance that I implemented in https://github.com/rust-lang/rust/pull/130798 into a new doc pass `propagate-stability` that runs after doc inlining and uses the post-inlining ancestors of an item to correctly compute its effective stability.
fixes https://github.com/rust-lang/rust/issues/131020
r? `@notriddle`
2024-10-01 04:30:33 +00:00
bors
f79ef02e4b
Auto merge of #130587 - coolreader18:field-variant-doclink-disambig, r=notriddle,jyn514
...
Add `field@` and `variant@` doc-link disambiguators
I'm not sure if this is big enough to need an fcp or not, but this is something I found missing when trying to refer to a field in macro-generated docs, not knowing if a method might be defined as well. Obviously, there are definitely other uses.
In the case where it's not disambiguated, methods (and I suppose other associated items in the value namespace) still take priority, which `@jyn514` said was an oversight but I think is probably the desired behavior 99% of the time anyway - shadowing a field with an accessor method is a very common pattern. If fields and methods with the same name started conflicting, it would be a breaking change. Though, to quote them:
> jyn: maybe you can break this only if both [the method and the field] are public
> jyn: rustc has some future-incompat warning level
> jyn: that gets through -A warnings and --cap-lints from cargo
That'd be out of scope of this PR, though.
Fixes #80283
2024-10-01 01:45:35 +00:00
Lukas Markeffsky
cd31b3acb3
rustdoc: rewrite stability inheritance as a pass
2024-09-30 21:58:18 +00:00
Lukas Markeffsky
2fdeb3b8f4
rustdoc: inherit parent's stability where applicable
2024-09-24 20:18:36 +02:00
Michael Goulet
0a0ea28f26
Rollup merge of #129545 - notriddle:notriddle/toolbar-v2, r=GuillaumeGomez
...
rustdoc: redesign toolbar and disclosure widgets
Fixes #77899
Fixes #90310
## Preview
| before | after
| ------ | -----
| ![image](https://github.com/user-attachments/assets/ebeec185-3a72-481d-921e-a9a885f348d9 ) | ![image](https://github.com/user-attachments/assets/08735a65-99d1-4523-ab77-ddb164c0a5db )
| ![image](https://github.com/user-attachments/assets/ae8e0f24-49cb-445d-b9bd-cec9c57b94e7 ) | ![image](https://github.com/user-attachments/assets/ba484f94-b031-41fc-b8a8-6cd81be8fb6b )
| ![image](https://github.com/user-attachments/assets/8c2cc041-a138-4950-a12e-3d529c8a5339 ) | ![image](https://github.com/user-attachments/assets/e7f010bd-19e2-4711-85bf-3fd00c3e5647 )
| ![image](https://github.com/user-attachments/assets/e2b63785-971c-489e-b069-eb85f6a30620 ) | ![image](https://github.com/user-attachments/assets/b65eea16-d6a3-4aa3-8a27-6ded74009010 )
| ![image](https://github.com/user-attachments/assets/1c7b0901-a61a-4325-9d01-9d8b14b476aa ) | ![image](https://github.com/user-attachments/assets/d4a485db-d9f1-4a62-94bc-a3d125ea6dc1 )
| N/A | ![image](https://github.com/user-attachments/assets/7add0a2a-7fd7-483d-87ee-51ee45a2fe5d )
| ![image](https://github.com/user-attachments/assets/334f50bc-9f8d-42d9-a7df-95058f7cdfd5 ) | ![image](https://github.com/user-attachments/assets/451fcc22-b034-453c-ae4b-b948fd6bd779 )
| ![image](https://github.com/user-attachments/assets/132f720c-802a-466d-bd55-c7a4750acdc3 ) | ![image](https://github.com/user-attachments/assets/177b7921-06c5-467d-87d3-9cdf88c4e50b )
https://notriddle.com/rustdoc-html-demo-12/toolbar-v2/std/index.html
## Description
This adds labels to the icons and moves them away from the search box.
These changes are made together, because they work together, but are based on several complaints:
* The [+/-] thing are a Reddit-ism. They don't look like buttons, but look like syntax <https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons >, <https://github.com/rust-lang/rust/issues/59851 > (some of these are laundry lists with more suggestions, but they all mention [+/-] looking wrong)
* The settings, help, and summary buttons are also too hard to recognize <https://lwn.net/Articles/987070/ >, <https://github.com/rust-lang/rust/issues/90310 >, <https://github.com/rust-lang/rust/issues/14475#issuecomment-274241997 >, <https://internals.rust-lang.org/t/improve-rustdoc-design/12758 > ("Not all functionality is self-explanatory, for example the [+] button in the top right corner, the theme picker or the settings button.")
The toggle-all and toggle-individual buttons both need done at once, since we want them to look like they go together. This changes them from both being [+/-] to both being arrows.
CC <https://github.com/rust-lang/rust/pull/113074#issuecomment-1677469680 > and ``@jsha`` regarding the use of triangles for disclosure, which is what everyone wanted, but was pending a good toggle-all button. This PR adds a toggle-all button that should work.
Settings and Help are also migrated, so that the whole group can benefit from being described using actual words.
The breadcrumbs also get redesigned, so that they use less space, by shrinking the parent module path parts. This is done at the same time as the toolbar redesign because it's, effectively, moving space from the toolbar to the breadcrumbs.
This is aimed at avoiding any line wrapping at desktop sizes.
## Prior art
This style of toolbar, with explicit labels on the buttons, used to be more popular. It's not very common in web browsers nowadays, and for truly universal icons like ⬅️ I can understand why, but words are great when icons fail.
![image](https://github.com/user-attachments/assets/9a4a0498-232d-4d60-87b9-f601f4515254 )
2024-09-23 23:49:11 -04:00
Michael Howell
cc3ffe4c91
Tweak breadcrumbs list
2024-09-23 09:21:39 -07:00
Noa
e91e01509e
Add field@
and variant@
doc-link disambiguators
2024-09-19 19:16:53 -05:00
Michael Howell
061cbae7c9
rustdoc: rename issue-\d+.rs
tests to have meaningful names
2024-09-12 13:47:51 -07:00
Michael Howell
9454a89ef0
Add URL and crate_name to test cases
2024-09-12 13:38:24 -07:00
Michael Howell
5b1b2e97e3
rustdoc: make the header show all three buttons
...
This tweaks it to use less space for the breadcrumbs.
2024-09-10 17:56:06 -07:00
Michael Howell
d05323c7b4
rustdoc: redesign toolbar and disclosure widgets
...
This adds labels to the icons and moves them away from the search box.
These changes are made together, because they work together, but are based on
several complaints:
* The [+/-] thing are a Reddit-ism. They don't look like buttons, but look
like syntax
<https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/More.20visual.20difference.20for.20the.20.2B.2F-.20.20Icons >,
<https://github.com/rust-lang/rust/issues/59851 >
(some of these are laundry lists with more suggestions, but they all
mention [+/-] looking wrong)
* The settings, help, and summary buttons are also too hard to recognize
<https://lwn.net/Articles/987070/ >,
<https://github.com/rust-lang/rust/issues/90310 >,
<https://github.com/rust-lang/rust/issues/14475#issuecomment-274241997 >,
<https://internals.rust-lang.org/t/improve-rustdoc-design/12758 >
("Not all functionality is self-explanatory, for example the [+] button in
the top right corner, the theme picker or the settings button.")
The toggle-all and toggle-individual buttons both need done at once, since we
want them to look like they go together. This changes them from both being
[+/-] to both being arrows.
Settings and Help are also migrated, so that the whole group can benefit from
being described using actual words.
Additionally, the Help button is only shown on SERPs, not all the time.
This is done for two major reasons:
* Most of what's in there is search-related. The things that aren't are
keyboard commands, and the search box tells you about that anyway.
Pressing <kbd>?</kbd> will temporarily show the button and its popover.
* I'm trading it off by showing the help button, even on mobile.
It's useful since you can use the search engine suggestions there.
* The three buttons were causing line wrapping on too many desktop layouts.
2024-09-10 17:56:05 -07:00
bors
6f7229c4da
Auto merge of #129403 - scottmcm:only-array-simd, r=compiler-errors
...
Ban non-array SIMD
Nearing the end of https://github.com/rust-lang/compiler-team/issues/621 !
Currently blocked on ~~https://github.com/rust-lang/compiler-builtins/pull/673~~ ~~https://github.com/rust-lang/compiler-builtins/pull/674~~ ~~https://github.com/rust-lang/rust/pull/129400~~ ~~https://github.com/rust-lang/rust/pull/129481~~ for windows.
2024-09-10 22:47:40 +00:00
Scott McMurray
d2309c2a9d
Ban non-array SIMD
2024-09-09 19:39:43 -07:00
EtomicBomb
548b6e197d
add tests for behavior in rfc#3662
...
* Adds tests for the behavior from rfc#3662 in `tests/rustdoc/`
2024-09-07 19:02:22 -04:00
Guillaume Gomez
238944c5d7
Add regression test for sidebar associated items
2024-09-05 12:16:59 +02:00
Guillaume Gomez
1884983001
Make impl associated constants sorted first
2024-09-05 12:15:15 +02:00
Guillaume Gomez
f96aff95d5
Add regression test for impl associated items sorting
2024-09-05 12:13:59 +02:00
Matthias Krüger
e1da72c6e8
Rollup merge of #120736 - notriddle:notriddle/toc, r=t-rustdoc
...
rustdoc: add header map to the table of contents
## Summary
Add header sections to the sidebar TOC.
### Preview
![image](https://github.com/user-attachments/assets/eae4df02-86aa-4df4-8c61-a95685cd8829 )
* http://notriddle.com/rustdoc-html-demo-9/toc/rust/std/index.html
* http://notriddle.com/rustdoc-html-demo-9/toc/rust-derive-builder/derive_builder/index.html
## Motivation
Some pages are very wordy, like these.
| crate | word count |
|--|--|
| [std::option](https://doc.rust-lang.org/stable/std/option/index.html ) | 2,138
| [derive_builder](https://docs.rs/derive_builder/0.13.0/derive_builder/index.html ) | 2,403
| [tracing](https://docs.rs/tracing/0.1.40/tracing/index.html ) | 3,912
| [regex](https://docs.rs/regex/1.10.3/regex/index.html ) | 8,412
This kind of very long document is more navigable with a table of contents, like Wikipedia's or the one [GitHub recently added](https://github.blog/changelog/2021-04-13-table-of-contents-support-in-markdown-files/ ) for READMEs.
In fact, the use case is so compelling, that it's been requested multiple times and implemented in an extension:
* https://github.com/rust-lang/rust/issues/80858
* https://github.com/rust-lang/rust/issues/28056
* https://github.com/rust-lang/rust/issues/14475
* https://rust.extension.sh/#show-table-of-content
(Some of these issues ask for more than this, so don’t close them.)
It's also been implemented by hand in some crates, because the author really thought it was needed. Protip: for a more exhaustive list, run [`site:docs.rs table of contents`](https://duckduckgo.com/?t=ffab&q=site%3Adocs.rs+table+of+contents&ia=web ), though some of them are false positives.
* https://docs.rs/figment/0.10.14/figment/index.html#table-of-contents
* https://docs.rs/csv/1.3.0/csv/tutorial/index.html#table-of-contents
* https://docs.rs/axum/0.7.4/axum/response/index.html#table-of-contents
* https://docs.rs/regex-automata/0.4.5/regex_automata/index.html#table-of-contents
Unfortunately for these hand-built ToCs, because they're just part of the docs, there's no consistent way to turn them off if the reader doesn't want them. It's also more complicated to ensure they stay in sync with the docs they're supposed to describe, and they don't stay with you when you scroll like Wikipedia's [does now](https://uxdesign.cc/design-notes-on-the-2023-wikipedia-redesign-d6573b9af28d ).
## Guide-level explanation
When writing docs for a top-level item, the first and second level of headers will be shown in an outline in the sidebar. In this context, "top level" means "not associated".
This means, if you're writing very long guides or explanations, and you want it to have a table of contents in the sidebar for its headings, the ideal place to attach it is usually the *module* or *crate*, because this page has fewer other things on it (and is the ideal place to describe "cross-cutting concerns" for its child items).
If you're reading documentation, and want to get rid of the table of contents, open the ![image](https://github.com/rust-lang/rust/assets/1593513/2ad82466-5fe3-4684-b1c2-6be4c99a8666 ) Settings panel and checkmark "Hide table of contents."
## Reference-level explanation
Top-level items have an outline generated. This works for potentially-malformed header trees by pairing a header with the nearest header with a higher level. For example:
```markdown
## A
# B
# C
## D
## E
```
A, B, and C are all siblings, and D and E are children of C.
Rustdoc only presents two layers of tree, but it tracks up to the full depth of 6 while preparing it.
That means that these two doc comment both generate the same outline:
```rust
/// # First
/// ## Second
struct One;
/// ## First
/// ### Second
struct Two;
```
## Drawbacks
The biggest drawback is adding more stuff to the sidebar.
My crawl through docs.rs shows this to, surprisingly, be less of a problem than I thought. The manually-built tables of contents, and the pages with dozens of headers, usually seem to be modules or crates, not types (where extreme scrolling would become a problem, since they already have methods to deal with).
The best example of a type with many headers is [vec::Vec](https://doc.rust-lang.org/1.75.0/std/vec/struct.Vec.html ), which still only has five headers, not dozens like [axum::extract](https://docs.rs/axum/0.7.4/axum/extract/index.html ).
## Rationale and alternatives
### Why in the existing sidebar?
The method links and the top-doc header links have more in common with each other than either of them do with the "In [parent module]" links, and should go together.
### Why limited to two levels?
The sidebar is pretty narrow, and I don't want too much space used by indentation. Making the sidebar wider, while it has some upsides, also takes up more space on middling-sized screens or tiled WMs.
### Why not line wrap?
That behaves strangely when resizing.
## Prior art
### Doc generators that have TOC for headers
https://hexdocs.pm/phoenix/Phoenix.Controller.html is very close, in the sense that it also has header sections directly alongside functions and types.
Another example, referenced as part of the [early sidebar discussion](https://github.com/rust-lang/rust/issues/37856 ) that added methods, Ruby will show a table of contents in the sidebar (for example, on the [ARGF](https://docs.ruby-lang.org/en/master/ARGF.html ) class). According to their changelog, [they added it in 2013](06137bde8c/History.rdoc (400--2013-02-24-)
).
Haskell seems to mix text and functions even more freely than Elixir. For example, this [Naming conventions](https://hackage.haskell.org/package/base-4.19.0.0/docs/Control-Monad.html#g:3 ) is plain text, and is immediately followed by functions. And the [Pandoc top level](https://hackage.haskell.org/package/pandoc-3.1.11.1/docs/Text-Pandoc.html ) has items split up by function, rather than by kind. Their TOC matches exactly with the contents of the page.
### Doc generators that don't have header TOC, but still have headers
Elm, interestingly enough, seems to have the same setup that Rust used to have: sibling navigation between modules, and no index within a single page. [They keep Haskell's habit of named sections with machine-generated type signatures](https://package.elm-lang.org/packages/elm/browser/latest/Browser-Dom ), though.
[PHP](https://www.php.net/manual/en/book.datetime.php ), like elm, also has a right-hand sidebar with sibling navigation. However, PHP has a single page for a single method, unlike Rust's page for an entire "class." So even though these pages have headers, it's never more than ten at most. And when they have guides, those guides are also multi-page.
## Unresolved questions
* Writing recommendations for anyone who wants to take advantage of this.
* Right now, it does not line wrap. That might be a bad idea: a lot of these are getting truncated.
* Split sidebars, which I [tried implementing](https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/Table.20of.20contents ), are not required. The TOC can be turned off, if it's really a problem. Implemented in https://github.com/rust-lang/rust/pull/120818 , but needs more, separate, discussion.
## Future possibilities
I would like to do a better job of distinguishing global navigation from local navigation. Rustdoc has a pretty reasonable information architecture, if only we did a better job of communicating it.
This PR aims, mostly, to help doc authors help their users by writing docs that can be more effectively skimmed. But it doesn't do anything to make it easier to tell the TOC and the Module Nav apart.
2024-09-05 03:47:40 +02:00
Matthias Krüger
862b911551
Rollup merge of #129560 - GuillaumeGomez:impl-assoc-type-source-link, r=notriddle
...
[rustdoc] Generate source link on impl associated types
Currently, impl associated types are generated but don't get a source link. This PR fixes that.
Before:
![image](https://github.com/user-attachments/assets/3a22adb5-8b66-4124-9267-7c26eed1aa5e )
After:
![Screenshot from 2024-08-25 16-31-36](https://github.com/user-attachments/assets/6e9b35e7-4357-4ecf-8c49-1d8294051283 )
r? `@notriddle`
2024-08-27 00:42:01 +02:00
Guillaume Gomez
ca6be7414a
Add regression test for impl associated types source link
2024-08-25 16:22:35 +02:00
Guillaume Gomez
b581fed15e
Generate missing source link on impl associated types
2024-08-25 16:22:35 +02:00
Michael Howell
6df0ccf49e
rustdoc: clean up tuple <-> primitive conversion docs
...
This adds a minor missing feature to `fake_variadic`,
so that it can render `impl From<(T,)> for [T; 1]` correctly.
2024-08-24 14:06:57 -07:00
Guillaume Gomez
4de29c9047
Add regression test for #126796
2024-08-22 20:27:57 +02:00
Michael Howell
12a3c42ccc
rustdoc: consistentify #TOC
and #ModNav
to lowercase
2024-08-20 16:51:40 -07:00
Michael Howell
95fcddd29f
Add more test case
2024-08-20 16:51:39 -07:00
Michael Howell
7091fa5880
rustdoc: show code spans as <code>
in TOC
2024-08-20 16:51:37 -07:00
Michael Howell
68773c789a
rustdoc: add separate section for module items
2024-08-20 16:51:33 -07:00
Michael Howell
5a6054b4a2
rustdoc: add separate section for module items
2024-08-20 16:51:31 -07:00
Michael Howell
1aebff96ad
Add Top TOC support to rustdoc
...
This commit adds the headers for the top level documentation to
rustdoc's existing table of contents, along with associated items.
It only show two levels of headers. Going further would require the
sidebar to be wider, and that seems unnecessary (the crates that
have manually-built TOCs usually don't need deeply nested headers).
2024-08-20 16:27:42 -07:00