mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rollup merge of #136254 - BoxyUwU:rdg-push, r=Kobzol
Rustc dev guide subtree update r? `@Kobzol`
This commit is contained in:
commit
48b3eca63e
@ -41,7 +41,9 @@ jobs:
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: book/linkcheck/cache.json
|
||||
key: linkcheck--${{ env.MDBOOK_LINKCHECK2_VERSION }}
|
||||
key: linkcheck--${{ env.MDBOOK_LINKCHECK2_VERSION }}--${{ github.run_id }}
|
||||
restore-keys: |
|
||||
linkcheck--${{ env.MDBOOK_LINKCHECK2_VERSION }}--
|
||||
|
||||
- name: Install latest nightly Rust toolchain
|
||||
if: steps.mdbook-cache.outputs.cache-hit != 'true'
|
||||
@ -66,7 +68,7 @@ jobs:
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: book/linkcheck/cache.json
|
||||
key: linkcheck--${{ env.MDBOOK_LINKCHECK2_VERSION }}
|
||||
key: linkcheck--${{ env.MDBOOK_LINKCHECK2_VERSION }}--${{ github.run_id }}
|
||||
|
||||
- name: Deploy to gh-pages
|
||||
if: github.event_name == 'push'
|
||||
|
@ -50,10 +50,10 @@ jobs:
|
||||
RESULT=`gh pr list --author github-actions[bot] --state open -q 'map(select(.title=="Rustc pull update")) | length' --json title`
|
||||
if [[ "$RESULT" -eq 0 ]]; then
|
||||
echo "Creating new pull request"
|
||||
PR_URL=gh pr create -B master --title 'Rustc pull update' --body 'Latest update from rustc.'
|
||||
PR_URL=`gh pr create -B master --title 'Rustc pull update' --body 'Latest update from rustc.'`
|
||||
echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
|
||||
else
|
||||
PR_URL=gh pr list --author github-actions[bot] --state open -q 'map(select(.title=="Rustc pull update")) | .[0].url' --json url,title
|
||||
PR_URL=`gh pr list --author github-actions[bot] --state open -q 'map(select(.title=="Rustc pull update")) | .[0].url' --json url,title`
|
||||
echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
env:
|
||||
|
@ -1 +1 @@
|
||||
ecda83b30f0f68cf5692855dddc0bc38ee8863fc
|
||||
66d6064f9eb888018775e08f84747ee6f39ba28e
|
||||
|
@ -72,7 +72,6 @@ You might also find the following sites useful:
|
||||
- The [Rust reference][rr], even though it doesn't specifically talk about
|
||||
Rust's internals, is a great resource nonetheless
|
||||
- Although out of date, [Tom Lee's great blog article][tlgba] is very helpful
|
||||
- [rustaceans.org][ro] is helpful, but mostly dedicated to IRC
|
||||
- The [Rust Compiler Testing Docs][rctd]
|
||||
- For [@bors], [this cheat sheet][cheatsheet] is helpful
|
||||
- Google is always helpful when programming.
|
||||
|
@ -42,7 +42,7 @@ format is specific to `rustc`, and may change over time. This file contains:
|
||||
### dylib
|
||||
|
||||
A `dylib` is a platform-specific shared library. It includes the `rustc`
|
||||
[metadata] in a special link section called `.rustc` in a compressed format.
|
||||
[metadata] in a special link section called `.rustc`.
|
||||
|
||||
### rmeta
|
||||
|
||||
|
@ -602,7 +602,7 @@ as the linter walks the AST. You can then choose to emit lints in a
|
||||
very similar way to compile errors.
|
||||
|
||||
You also declare the metadata of a particular lint via the `declare_lint!`
|
||||
macro. This includes the name, the default level, a short description, and some
|
||||
macro. [This macro](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint_defs/macro.declare_lint.html) includes the name, the default level, a short description, and some
|
||||
more details.
|
||||
|
||||
Note that the lint and the lint pass must be registered with the compiler.
|
||||
|
@ -126,9 +126,9 @@ In this example we call `foo`'s function item type twice, each time with a borro
|
||||
If the lifetime parameter on `foo` was late bound this would be able to compile as each caller could provide a different lifetime argument for its borrow. See the following example which demonstrates this using the `bar` function defined above:
|
||||
|
||||
```rust
|
||||
#fn foo<'a: 'a>(b: &'a String) -> &'a String { b }
|
||||
#fn bar<'a>(b: &'a String) -> &'a String { b }
|
||||
|
||||
# fn foo<'a: 'a>(b: &'a String) -> &'a String { b }
|
||||
# fn bar<'a>(b: &'a String) -> &'a String { b }
|
||||
#
|
||||
// Early bound parameters are instantiated here, however as `'a` is
|
||||
// late bound it is not provided here.
|
||||
let b = bar;
|
||||
@ -220,24 +220,24 @@ Then, for the first case, we can call each function with a single lifetime argum
|
||||
```rust
|
||||
#![deny(late_bound_lifetime_arguments)]
|
||||
|
||||
#fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#
|
||||
#struct Foo;
|
||||
# struct Foo;
|
||||
#
|
||||
#trait Trait: Sized {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||
#}
|
||||
# trait Trait: Sized {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||
# }
|
||||
#
|
||||
#impl Trait for Foo {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#}
|
||||
# impl Trait for Foo {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# }
|
||||
#
|
||||
#impl Foo {
|
||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#}
|
||||
# impl Foo {
|
||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# }
|
||||
#
|
||||
// Specifying as many arguments as there are early
|
||||
// bound parameters is always a future compat warning
|
||||
@ -251,24 +251,24 @@ free_function::<'static>(&(), &());
|
||||
|
||||
For the second case we call each function with more lifetime arguments than there are lifetime parameters (be it early or late bound) and note that method calls result in a FCW as opposed to the free/associated functions which result in a hard error:
|
||||
```rust
|
||||
#fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#
|
||||
#struct Foo;
|
||||
# struct Foo;
|
||||
#
|
||||
#trait Trait: Sized {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||
#}
|
||||
# trait Trait: Sized {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||
# }
|
||||
#
|
||||
#impl Trait for Foo {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#}
|
||||
# impl Trait for Foo {
|
||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# }
|
||||
#
|
||||
#impl Foo {
|
||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
#}
|
||||
# impl Foo {
|
||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||
# }
|
||||
#
|
||||
// Specifying more arguments than there are early
|
||||
// bound parameters is a future compat warning when
|
||||
@ -421,4 +421,4 @@ impl<'a> Fn<()> for FooFnItem<'a> {
|
||||
type Output = &'a String;
|
||||
/* fn call(...) -> ... { ... } */
|
||||
}
|
||||
```
|
||||
```
|
||||
|
@ -137,6 +137,10 @@ pull request, continuing the work on the feature.
|
||||
|
||||
[abandoned-prs]: https://github.com/rust-lang/rust/pulls?q=is%3Apr+label%3AS-inactive+is%3Aclosed
|
||||
|
||||
### Writing tests
|
||||
|
||||
Issues that have been resolved but do not have a regression test are marked with the `E-needs-test` label. Writing unit tests is a low-risk, lower-priority task that offers new contributors a great opportunity to familiarize themselves with the testing infrastructure and contribution workflow.
|
||||
|
||||
### Contributing to std (standard library)
|
||||
|
||||
See [std-dev-guide](https://std-dev-guide.rust-lang.org/).
|
||||
|
@ -58,10 +58,13 @@ does is call the `main()` that's in this crate's `lib.rs`, though.)
|
||||
* If you want to copy those docs to a webserver, copy all of
|
||||
`build/host/doc`, since that's where the CSS, JS, fonts, and landing
|
||||
page are.
|
||||
* For frontend debugging, disable the `rust.docs-minification` option in [`config.toml`].
|
||||
* Use `./x test tests/rustdoc*` to run the tests using a stage1
|
||||
rustdoc.
|
||||
* See [Rustdoc internals] for more information about tests.
|
||||
|
||||
[`config.toml`]: ./building/how-to-build-and-run.md
|
||||
|
||||
## Code structure
|
||||
|
||||
* All paths in this section are relative to `src/librustdoc` in the rust-lang/rust repository.
|
||||
@ -77,6 +80,7 @@ does is call the `main()` that's in this crate's `lib.rs`, though.)
|
||||
* The tests on the structure of rustdoc HTML output are located in `tests/rustdoc`, where
|
||||
they're handled by the test runner of bootstrap and the supplementary script
|
||||
`src/etc/htmldocck.py`.
|
||||
* Frontend CSS and JavaScript are stored in `html/static/`.
|
||||
|
||||
## Tests
|
||||
|
||||
@ -91,6 +95,11 @@ does is call the `main()` that's in this crate's `lib.rs`, though.)
|
||||
browser-UI-test](https://github.com/GuillaumeGomez/browser-UI-test/) that uses
|
||||
puppeteer to run tests in a headless browser and check rendering and
|
||||
interactivity.
|
||||
* Additionally, JavaScript type annotations are written using [TypeScript-flavored JSDoc]
|
||||
comments and an external d.ts file. The code itself is plain, valid JavaScript; we only
|
||||
use tsc as a linter.
|
||||
|
||||
[TypeScript-flavored JSDoc]: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html
|
||||
|
||||
## Constraints
|
||||
|
||||
|
@ -42,7 +42,7 @@ old implementation structurally relates the aliases instead. This enables the
|
||||
new solver to stall equality until it is able to normalize the related aliases.
|
||||
|
||||
The behavior of the old solver is incomplete and relies on eager normalization
|
||||
which replaces ambiguous aliases with inference variables. As this is not
|
||||
which replaces ambiguous aliases with inference variables. As this is
|
||||
not possible for aliases containing bound variables, the old implementation does
|
||||
not handle aliases inside of binders correctly, e.g. [#102048]. See the chapter on
|
||||
[normalization] for more details.
|
||||
|
Loading…
Reference in New Issue
Block a user