Skip to content

Improve documentation of struct expressions #1799

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 28, 2025

Conversation

WaffleLapkin
Copy link
Member

@WaffleLapkin WaffleLapkin commented Apr 20, 2025

This compiles:

trait Tr { type T; }
impl<T> Tr for T { type T = T; }

struct Enum { Unit, Tuple() }

<Enum as Tr>::T::Unit; // OK
<Enum as Tr>::T::Tuple(); // OK

So qualified paths can be used when constructing tuple/unit variants. This PR documents that. (note that tuple/unit struct expressions aren't really a thing -- they are just calls/paths, so this doesn't necessarily change much, calls/paths already have correct docs)

Additionally I added more mentions of the fact that these expressions are the same for enums.

@rustbot rustbot added the S-waiting-on-review Status: The marked PR is awaiting review from a maintainer label Apr 20, 2025
Copy link
Contributor

@ehuss ehuss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

I opened #1802 to capture my thoughts on this in general, and to consider just removing all of this. (Not a blocker for this PR.) I've never been particularly comfortable with how this is presented.

Comment on lines 26 to 29
StructExprTuple ->
PathInExpression `(`
PathExpression `(`
( Expression (`,` Expression)* `,`? )?
`)`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe to simplify this further it can be StructExprTuple -> CallExpression

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done ✅

Copy link
Contributor

@ehuss ehuss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@ehuss ehuss added this pull request to the merge queue Apr 28, 2025
Merged via the queue into rust-lang:master with commit 48ad733 Apr 28, 2025
5 checks passed
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request May 5, 2025
Update books

## rust-lang/reference

9 commits in 3bf3402aea982b876eb56c87da17b0685c6461d5..387392674d74656f7cb437c05a96f0c52ea8e601
2025-05-03 21:29:09 UTC to 2025-04-22 15:25:03 UTC

- Document `let_chains` again (rust-lang/reference#1740)
- Add: orphan rule rationale. (rust-lang/reference#1755)
- Remove apologies about the Reference (rust-lang/reference#1792)
- Clean up some inline assembly examples (rust-lang/reference#1804)
- Remove StructExprTuple and StructExprUnit (rust-lang/reference#1803)
- Improve documentation of struct expressions (rust-lang/reference#1799)
- Clarify interaction of asm-goto with IBT (rust-lang/reference#1790)
- naked functions (rust-lang/reference#1689)
- Relabel grammarRailroad-Button (rust-lang/reference#1798)

## rust-lang/rust-by-example

3 commits in 0d7964d5b22cf920237ef1282d869564b4883b88..8a8918c698534547fa8a1a693cb3e7277f0bfb2f
2025-04-30 12:20:49 UTC to 2025-04-22 17:42:30 UTC

-   The example is not meant to be compiled. Changed the code block ann… (rust-lang/rust-by-example#1926)
- Non-tail recursive call note in testcase_linked_list.md (rust-lang/rust-by-example#1924)
- docs: mark illustrative 'static lifetime example with `ignore` (rust-lang/rust-by-example#1923)
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request May 6, 2025
Rollup merge of rust-lang#140676 - rustbot:docs-update, r=ehuss

Update books

## rust-lang/reference

9 commits in 3bf3402aea982b876eb56c87da17b0685c6461d5..387392674d74656f7cb437c05a96f0c52ea8e601
2025-05-03 21:29:09 UTC to 2025-04-22 15:25:03 UTC

- Document `let_chains` again (rust-lang/reference#1740)
- Add: orphan rule rationale. (rust-lang/reference#1755)
- Remove apologies about the Reference (rust-lang/reference#1792)
- Clean up some inline assembly examples (rust-lang/reference#1804)
- Remove StructExprTuple and StructExprUnit (rust-lang/reference#1803)
- Improve documentation of struct expressions (rust-lang/reference#1799)
- Clarify interaction of asm-goto with IBT (rust-lang/reference#1790)
- naked functions (rust-lang/reference#1689)
- Relabel grammarRailroad-Button (rust-lang/reference#1798)

## rust-lang/rust-by-example

3 commits in 0d7964d5b22cf920237ef1282d869564b4883b88..8a8918c698534547fa8a1a693cb3e7277f0bfb2f
2025-04-30 12:20:49 UTC to 2025-04-22 17:42:30 UTC

-   The example is not meant to be compiled. Changed the code block ann… (rust-lang/rust-by-example#1926)
- Non-tail recursive call note in testcase_linked_list.md (rust-lang/rust-by-example#1924)
- docs: mark illustrative 'static lifetime example with `ignore` (rust-lang/rust-by-example#1923)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: The marked PR is awaiting review from a maintainer
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants