mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 03:38:29 +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
|
uses: actions/cache/restore@v4
|
||||||
with:
|
with:
|
||||||
path: book/linkcheck/cache.json
|
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
|
- name: Install latest nightly Rust toolchain
|
||||||
if: steps.mdbook-cache.outputs.cache-hit != 'true'
|
if: steps.mdbook-cache.outputs.cache-hit != 'true'
|
||||||
@ -66,7 +68,7 @@ jobs:
|
|||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: book/linkcheck/cache.json
|
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
|
- name: Deploy to gh-pages
|
||||||
if: github.event_name == 'push'
|
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`
|
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
|
if [[ "$RESULT" -eq 0 ]]; then
|
||||||
echo "Creating new pull request"
|
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
|
echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
|
||||||
else
|
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
|
echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
env:
|
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
|
- The [Rust reference][rr], even though it doesn't specifically talk about
|
||||||
Rust's internals, is a great resource nonetheless
|
Rust's internals, is a great resource nonetheless
|
||||||
- Although out of date, [Tom Lee's great blog article][tlgba] is very helpful
|
- 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]
|
- The [Rust Compiler Testing Docs][rctd]
|
||||||
- For [@bors], [this cheat sheet][cheatsheet] is helpful
|
- For [@bors], [this cheat sheet][cheatsheet] is helpful
|
||||||
- Google is always helpful when programming.
|
- Google is always helpful when programming.
|
||||||
|
@ -42,7 +42,7 @@ format is specific to `rustc`, and may change over time. This file contains:
|
|||||||
### dylib
|
### dylib
|
||||||
|
|
||||||
A `dylib` is a platform-specific shared library. It includes the `rustc`
|
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
|
### 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.
|
very similar way to compile errors.
|
||||||
|
|
||||||
You also declare the metadata of a particular lint via the `declare_lint!`
|
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.
|
more details.
|
||||||
|
|
||||||
Note that the lint and the lint pass must be registered with the compiler.
|
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:
|
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
|
```rust
|
||||||
#fn foo<'a: '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 }
|
# fn bar<'a>(b: &'a String) -> &'a String { b }
|
||||||
|
#
|
||||||
// Early bound parameters are instantiated here, however as `'a` is
|
// Early bound parameters are instantiated here, however as `'a` is
|
||||||
// late bound it is not provided here.
|
// late bound it is not provided here.
|
||||||
let b = bar;
|
let b = bar;
|
||||||
@ -220,24 +220,24 @@ Then, for the first case, we can call each function with a single lifetime argum
|
|||||||
```rust
|
```rust
|
||||||
#![deny(late_bound_lifetime_arguments)]
|
#![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 {
|
# trait Trait: Sized {
|
||||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
#impl Trait for Foo {
|
# impl Trait for Foo {
|
||||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
#impl Foo {
|
# impl Foo {
|
||||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
// Specifying as many arguments as there are early
|
// Specifying as many arguments as there are early
|
||||||
// bound parameters is always a future compat warning
|
// 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:
|
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
|
```rust
|
||||||
#fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
# fn free_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||||
#
|
#
|
||||||
#struct Foo;
|
# struct Foo;
|
||||||
#
|
#
|
||||||
#trait Trait: Sized {
|
# trait Trait: Sized {
|
||||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ());
|
||||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ());
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
#impl Trait for Foo {
|
# impl Trait for Foo {
|
||||||
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
# fn trait_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||||
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
# fn trait_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
#impl Foo {
|
# impl Foo {
|
||||||
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
# fn inherent_method<'a: 'a, 'b>(self, _: &'a (), _: &'b ()) {}
|
||||||
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
# fn inherent_function<'a: 'a, 'b>(_: &'a (), _: &'b ()) {}
|
||||||
#}
|
# }
|
||||||
#
|
#
|
||||||
// Specifying more arguments than there are early
|
// Specifying more arguments than there are early
|
||||||
// bound parameters is a future compat warning when
|
// bound parameters is a future compat warning when
|
||||||
@ -421,4 +421,4 @@ impl<'a> Fn<()> for FooFnItem<'a> {
|
|||||||
type Output = &'a String;
|
type Output = &'a String;
|
||||||
/* fn call(...) -> ... { ... } */
|
/* 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
|
[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)
|
### Contributing to std (standard library)
|
||||||
|
|
||||||
See [std-dev-guide](https://std-dev-guide.rust-lang.org/).
|
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
|
* 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
|
`build/host/doc`, since that's where the CSS, JS, fonts, and landing
|
||||||
page are.
|
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
|
* Use `./x test tests/rustdoc*` to run the tests using a stage1
|
||||||
rustdoc.
|
rustdoc.
|
||||||
* See [Rustdoc internals] for more information about tests.
|
* See [Rustdoc internals] for more information about tests.
|
||||||
|
|
||||||
|
[`config.toml`]: ./building/how-to-build-and-run.md
|
||||||
|
|
||||||
## Code structure
|
## Code structure
|
||||||
|
|
||||||
* All paths in this section are relative to `src/librustdoc` in the rust-lang/rust repository.
|
* 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
|
* 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
|
they're handled by the test runner of bootstrap and the supplementary script
|
||||||
`src/etc/htmldocck.py`.
|
`src/etc/htmldocck.py`.
|
||||||
|
* Frontend CSS and JavaScript are stored in `html/static/`.
|
||||||
|
|
||||||
## Tests
|
## 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
|
browser-UI-test](https://github.com/GuillaumeGomez/browser-UI-test/) that uses
|
||||||
puppeteer to run tests in a headless browser and check rendering and
|
puppeteer to run tests in a headless browser and check rendering and
|
||||||
interactivity.
|
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
|
## 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.
|
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
|
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 possible for aliases containing bound variables, the old implementation does
|
||||||
not handle aliases inside of binders correctly, e.g. [#102048]. See the chapter on
|
not handle aliases inside of binders correctly, e.g. [#102048]. See the chapter on
|
||||||
[normalization] for more details.
|
[normalization] for more details.
|
||||||
|
Loading…
Reference in New Issue
Block a user