diff options
| author | Trevor Gross <t.gross35@gmail.com> | 2024-07-22 11:40:18 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-22 11:40:18 -0500 |
| commit | a42b99384d8001fc3d0e692b53c6e5fdeb12a197 (patch) | |
| tree | 58f0b0999699db227cb103d9d33871f65be04749 | |
| parent | aee3dc4c6cc0e018b648a340fb98af10887ce4ba (diff) | |
| parent | 38c557ca79908ef11aabf93ef6e15184ba8dd303 (diff) | |
| download | rust-a42b99384d8001fc3d0e692b53c6e5fdeb12a197.tar.gz rust-a42b99384d8001fc3d0e692b53c6e5fdeb12a197.zip | |
Rollup merge of #117932 - GuillaumeGomez:update-rustdoc-book, r=notriddle
Correct rustdoc section where we talk about rustdoc emitting errors on invalid code As discussed on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/stop.20accepting.20broken.20code/near/401760318). r? `@notriddle`
| -rw-r--r-- | src/doc/rustdoc/src/advanced-features.md | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/src/doc/rustdoc/src/advanced-features.md b/src/doc/rustdoc/src/advanced-features.md index 4a1c0916253..c02c9aebe7e 100644 --- a/src/doc/rustdoc/src/advanced-features.md +++ b/src/doc/rustdoc/src/advanced-features.md @@ -38,33 +38,10 @@ they will both appear in documentation. Rustdoc does not have a magic way to compile documentation 'as-if' you'd run it once for each platform (such a magic wand has been called the ['holy grail of rustdoc'][#1998]). Instead, it sees *all* of your code at once, the same way the Rust compiler would if you passed it -`--cfg doc`. However, Rustdoc has a trick up its sleeve to handle platform-specific code if it -*does* receive it. - -To document your crate, Rustdoc only needs to know the public signature of your functions. -In particular, it doesn't have to know how any of your functions are implemented, so it ignores -all type errors and name resolution errors with function bodies. Note that this does *not* -work for anything outside a function body: since Rustdoc documents your types, it has to -know what those types are! For example, this code will work regardless of the platform: - -```rust,ignore (platform-specific,rustdoc-specific-behavior) -pub fn f() { - use std::os::windows::ffi::OsStrExt; -} -``` - -but this will not, because the unknown type is part of the function signature: - -```rust,ignore (platform-specific,rustdoc-specific-behavior) -pub fn f() -> std::os::windows::ffi::EncodeWide<'static> { - unimplemented!() -} -``` - -For a more realistic example of code this allows, see [the rustdoc test suite][realistic-async]. +`--cfg doc`. The main difference is that rustdoc doesn't run all the compiler passes, meaning +that some invalid code won't emit an error. [#1998]: https://github.com/rust-lang/rust/issues/1998 -[realistic-async]: https://github.com/rust-lang/rust/blob/b146000e910ccd60bdcde89363cb6aa14ecc0d95/src/test/rustdoc-ui/error-in-impl-trait/realistic-async.rs ## Add aliases for an item in documentation search |
