Skip to content

Clarify parameter and argument compatibility#516

Merged
JohnTitor merged 3 commits intorust-lang:masterfrom
emamoah:patch-2
Feb 27, 2026
Merged

Clarify parameter and argument compatibility#516
JohnTitor merged 3 commits intorust-lang:masterfrom
emamoah:patch-2

Conversation

@emamoah
Copy link
Contributor

@emamoah emamoah commented Dec 30, 2025

Although this is unambiguous after understanding it, I feel it could use a bit more clarity. The first time I read this, I was mostly confused. Many times, without even knowing. Since there was an assignment going on (*input = val;), I thought the compatibility was referring to that assignment. This proposal makes it clear, especially to new readers, where exactly this compatibility lies.

Although this is unambiguous after understanding it, I feel it could use a bit more clarity. The first time I read this, I was mostly confused. Many times, without even knowing. Since there was an assignment going on (`*input = val;`), I thought the compatibility was referring to THAT assignment. This proposal makes it clear, especially to new readers, where exactly this compatibility lies.
@emamoah
Copy link
Contributor Author

emamoah commented Dec 30, 2025

On second thought, this might not be the best clarification, considering that there's no explicit indication of 'b in the code. It's "inside" the T. But then again, T gets substituted with 'static, as we see later on. Perhaps, a re-wording of the paragraph might help, but I'm not sure what that might be. Perhaps no clarification is needed at all.

@emamoah
Copy link
Contributor Author

emamoah commented Dec 30, 2025

On third thought (and this demonstrates the subtlety), I do understand that in the assignment, the first T (&'static str) is being replaced with the second T (&'b str), and so it does make some sense that the compatibility refers to the assignment. Maybe the only issue here is the invisibility of 'b in the snippet. It might after all not be a problem.

@emamoah
Copy link
Contributor Author

emamoah commented Dec 31, 2025

I think I've got a clearer and more accurate suggestion:

The problem is that we cannot assume &'static str can still be downgraded into &'world str to satisfy T, once it's behind a &mut reference. This means that &mut &'static str cannot be a subtype of &mut &'world str, even if 'static is a subtype of 'world.

It also now uses 'world as in the previous snippets to stay consistent.

Copy link
Member

@JohnTitor JohnTitor left a comment

Choose a reason for hiding this comment

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

Thanks! LGTM.

@JohnTitor JohnTitor added this pull request to the merge queue Feb 27, 2026
Merged via the queue into rust-lang:master with commit 69c1421 Feb 27, 2026
2 checks passed
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 9, 2026
Update books

## rust-embedded/book

4 commits in 99d0341ff4e06757490af8fceee790c4ede50bc0..e88aa4403b4bf2071c8df9509160477e40179099
2026-02-28 20:13:44 UTC to 2026-02-28 20:07:25 UTC

- Clarify that a mini usb cable is used on the STM32F3DISCOVERY (rust-embedded/book#381)
- Update outdated qemu documentation (rust-embedded/book#403)
- Add TRACE32 to Debuggers section (rust-embedded/book#406)
- Add a link to Rust for Zephyr (rust-embedded/book#407)

## rust-lang/nomicon

4 commits in b8f254a991b8b7e8f704527f0d4f343a4697dfa9..cc6a6bae8c3bfa389974e533c54694662c1a9de6
2026-02-27 23:27:18 UTC to 2026-02-26 22:57:03 UTC

- Fix `Vec::push_all` ptr code in exception-safety (rust-lang/nomicon#418)
- Clarify parameter and argument compatibility (rust-lang/nomicon#516)
- Improve grammar in Variance section (rust-lang/nomicon#515)
- Explicit `extern "C"` ABI for FFI (rust-lang/nomicon#520)

## rust-lang/reference

7 commits in 50a1075e879be75aeec436252c84eef0fad489f4..c49e89cc8c7c2c43ca625a8d5b7ad9a53a9ce978
2026-03-04 15:39:00 UTC to 2026-03-01 06:34:18 UTC

- Resolve grammar rules in link reference definitions (rust-lang/reference#2198)
- Support non-ASCII Unicode in grammar rule names (rust-lang/reference#2196)
- Fix grammar for block comments (rust-lang/reference#2191)
- Fix an EN grammar error & add an item to place expr context list (rust-lang/reference#2189)
- Align attribute template with applied conventions (rust-lang/reference#2194)
- Update shebang (rust-lang/reference#2192)
- Remove RESERVED_NUMBER (rust-lang/reference#2193)
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Mar 9, 2026
Update books

## rust-embedded/book

4 commits in 99d0341ff4e06757490af8fceee790c4ede50bc0..e88aa4403b4bf2071c8df9509160477e40179099
2026-02-28 20:13:44 UTC to 2026-02-28 20:07:25 UTC

- Clarify that a mini usb cable is used on the STM32F3DISCOVERY (rust-embedded/book#381)
- Update outdated qemu documentation (rust-embedded/book#403)
- Add TRACE32 to Debuggers section (rust-embedded/book#406)
- Add a link to Rust for Zephyr (rust-embedded/book#407)

## rust-lang/nomicon

4 commits in b8f254a991b8b7e8f704527f0d4f343a4697dfa9..cc6a6bae8c3bfa389974e533c54694662c1a9de6
2026-02-27 23:27:18 UTC to 2026-02-26 22:57:03 UTC

- Fix `Vec::push_all` ptr code in exception-safety (rust-lang/nomicon#418)
- Clarify parameter and argument compatibility (rust-lang/nomicon#516)
- Improve grammar in Variance section (rust-lang/nomicon#515)
- Explicit `extern "C"` ABI for FFI (rust-lang/nomicon#520)

## rust-lang/reference

7 commits in 50a1075e879be75aeec436252c84eef0fad489f4..c49e89cc8c7c2c43ca625a8d5b7ad9a53a9ce978
2026-03-04 15:39:00 UTC to 2026-03-01 06:34:18 UTC

- Resolve grammar rules in link reference definitions (rust-lang/reference#2198)
- Support non-ASCII Unicode in grammar rule names (rust-lang/reference#2196)
- Fix grammar for block comments (rust-lang/reference#2191)
- Fix an EN grammar error & add an item to place expr context list (rust-lang/reference#2189)
- Align attribute template with applied conventions (rust-lang/reference#2194)
- Update shebang (rust-lang/reference#2192)
- Remove RESERVED_NUMBER (rust-lang/reference#2193)
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Mar 9, 2026
Update books

## rust-embedded/book

4 commits in 99d0341ff4e06757490af8fceee790c4ede50bc0..e88aa4403b4bf2071c8df9509160477e40179099
2026-02-28 20:13:44 UTC to 2026-02-28 20:07:25 UTC

- Clarify that a mini usb cable is used on the STM32F3DISCOVERY (rust-embedded/book#381)
- Update outdated qemu documentation (rust-embedded/book#403)
- Add TRACE32 to Debuggers section (rust-embedded/book#406)
- Add a link to Rust for Zephyr (rust-embedded/book#407)

## rust-lang/nomicon

4 commits in b8f254a991b8b7e8f704527f0d4f343a4697dfa9..cc6a6bae8c3bfa389974e533c54694662c1a9de6
2026-02-27 23:27:18 UTC to 2026-02-26 22:57:03 UTC

- Fix `Vec::push_all` ptr code in exception-safety (rust-lang/nomicon#418)
- Clarify parameter and argument compatibility (rust-lang/nomicon#516)
- Improve grammar in Variance section (rust-lang/nomicon#515)
- Explicit `extern "C"` ABI for FFI (rust-lang/nomicon#520)

## rust-lang/reference

7 commits in 50a1075e879be75aeec436252c84eef0fad489f4..c49e89cc8c7c2c43ca625a8d5b7ad9a53a9ce978
2026-03-04 15:39:00 UTC to 2026-03-01 06:34:18 UTC

- Resolve grammar rules in link reference definitions (rust-lang/reference#2198)
- Support non-ASCII Unicode in grammar rule names (rust-lang/reference#2196)
- Fix grammar for block comments (rust-lang/reference#2191)
- Fix an EN grammar error & add an item to place expr context list (rust-lang/reference#2189)
- Align attribute template with applied conventions (rust-lang/reference#2194)
- Update shebang (rust-lang/reference#2192)
- Remove RESERVED_NUMBER (rust-lang/reference#2193)
rust-timer added a commit to rust-lang/rust that referenced this pull request Mar 10, 2026
Rollup merge of #153619 - rustbot:docs-update, r=ehuss

Update books

## rust-embedded/book

4 commits in 99d0341ff4e06757490af8fceee790c4ede50bc0..e88aa4403b4bf2071c8df9509160477e40179099
2026-02-28 20:13:44 UTC to 2026-02-28 20:07:25 UTC

- Clarify that a mini usb cable is used on the STM32F3DISCOVERY (rust-embedded/book#381)
- Update outdated qemu documentation (rust-embedded/book#403)
- Add TRACE32 to Debuggers section (rust-embedded/book#406)
- Add a link to Rust for Zephyr (rust-embedded/book#407)

## rust-lang/nomicon

4 commits in b8f254a991b8b7e8f704527f0d4f343a4697dfa9..cc6a6bae8c3bfa389974e533c54694662c1a9de6
2026-02-27 23:27:18 UTC to 2026-02-26 22:57:03 UTC

- Fix `Vec::push_all` ptr code in exception-safety (rust-lang/nomicon#418)
- Clarify parameter and argument compatibility (rust-lang/nomicon#516)
- Improve grammar in Variance section (rust-lang/nomicon#515)
- Explicit `extern "C"` ABI for FFI (rust-lang/nomicon#520)

## rust-lang/reference

7 commits in 50a1075e879be75aeec436252c84eef0fad489f4..c49e89cc8c7c2c43ca625a8d5b7ad9a53a9ce978
2026-03-04 15:39:00 UTC to 2026-03-01 06:34:18 UTC

- Resolve grammar rules in link reference definitions (rust-lang/reference#2198)
- Support non-ASCII Unicode in grammar rule names (rust-lang/reference#2196)
- Fix grammar for block comments (rust-lang/reference#2191)
- Fix an EN grammar error & add an item to place expr context list (rust-lang/reference#2189)
- Align attribute template with applied conventions (rust-lang/reference#2194)
- Update shebang (rust-lang/reference#2192)
- Remove RESERVED_NUMBER (rust-lang/reference#2193)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants