Skip to content
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

Fix syntax in 'static lifetime elision section of lifetime-elision.md #1463

Merged
merged 1 commit into from
Feb 9, 2024

Conversation

felix-andreas
Copy link
Contributor

Hi, (warning: not a Rust expert) there was a small thing that confused me while reading:

In one of the examples in the 'static lifetime elision section of the lifetime-elision chapter, I got the following error messages when trying out the explicit (non-elided) form.

Example:

// Resolved as `fn<'a>(&'a str) -> &'a str`.
const RESOLVED_SINGLE: fn(&str) -> &str = |x| x;

// Resolved as `Fn<'a, 'b, 'c>(&'a Foo, &'b Bar, &'c Baz) -> usize`.
const RESOLVED_MULTIPLE: &dyn Fn(&Foo, &Bar, &Baz) -> usize = &somefunc;

First case (function pointer):

error: function pointer types may not have generic parameters
 --> interaction-core/src/bin/foo.rs:5:26
  |
5 | const RESOLVED_SINGLE: fn<'a>(&'a str) -> &'a str = |x| x;
  |                          ^^^^
  |
help: consider moving the lifetime parameter to a `for` parameter list
  |
5 - const RESOLVED_SINGLE: fn<'a>(&'a str) -> &'a str = |x| x;
5 + const RESOLVED_SINGLE: for<'a> fn(&'a str) -> &'a str = |x| x;

Second case (closure trait):

error: `Fn` traits cannot take lifetime parameters
 --> interaction-core/src/bin/foo.rs:6:33
  |
6 | const RESOLVED_MULTIPLE: &dyn Fn<'a, 'b, 'c>(&'a Foo, &'b Bar, &'c Baz) -> usize = &somefunc;
  |                                 ^^^^^^^^^^^^
  |
help: consider using a higher-ranked trait bound instead
  |
6 - const RESOLVED_MULTIPLE: &dyn Fn<'a, 'b, 'c>(&'a Foo, &'b Bar, &'c Baz) -> usize = &somefunc;
6 + const RESOLVED_MULTIPLE: &dyn for<'a, 'b, 'c> Fn(&'a Foo, &'b Bar, &'c Baz) -> usize = &somefunc;

From the error messages, I conclude, that fn<'a>(&'a str) -> &'a str and Fn<'a, 'b, 'c>(&'a Foo, &'b Bar, &'c Baz) -> usize are not valid syntax for function pointers or closure traits and higher-ranked trait bound must be used instead.

I fixed the comments in the example according to the error message and verified that it compiles.

@matthewjasper matthewjasper added this pull request to the merge queue Feb 9, 2024
@matthewjasper
Copy link
Contributor

Thanks

Merged via the queue into rust-lang:master with commit 8c0b6a8 Feb 9, 2024
1 check passed
@felix-andreas felix-andreas deleted the patch-1 branch February 11, 2024 19:02
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 12, 2024
Update books

## rust-lang/edition-guide

1 commits in baafacc6d8701269dab1e1e333f3547fb54b5a59..76bd48a273a0e0413a3bf22c699112d41497b99e
2024-02-10 20:50:34 UTC to 2024-02-10 20:50:34 UTC

- Set up scaffolding for 2024 (rust-lang/edition-guide#288)

## rust-lang/reference

4 commits in a0b119535e7740f68494c4f0582f7ad008b00ccd..8227666de13f6e7bb32dea9dc42e841adb5ce4b7
2024-02-12 03:04:15 UTC to 2024-01-30 20:10:53 UTC

- Fix a typo in external-blocks.md (rust-lang/reference#1467)
- Fix syntax in `'static lifetime elision` section of `lifetime-elision.md` (rust-lang/reference#1463)
- Fix markdown backslash for FLOAT_LITERAL (rust-lang/reference#1464)
- C string literal expressions (rust-lang/reference#1457)

## rust-lang/rust-by-example

5 commits in 179256a445d6144f5f371fdefb993f48f33978b0..e188d5d466f7f3ff9f1d518393235f4fe951be46
2024-02-07 17:16:00 UTC to 2024-01-31 17:34:10 UTC

- Update macros.md (rust-lang/rust-by-example#1815)
- Update borrow.md (rust-lang/rust-by-example#1814)
- Fixes the bug: rust-lang/rust-by-example#1721 (rust-lang/rust-by-example#1811)
- std_misc/process/pipe.md: Fix typo in pangram string (rust-lang/rust-by-example#1809)
- Add expected error behavior into docs (rust-lang/rust-by-example#1810)

## rust-lang/rustc-dev-guide

9 commits in ec287e332777627185be4798ad22599ffe7b84aa..1f30cc7cca9a3433bc1872abdc98960b36c21ca0
2024-02-11 05:36:15 UTC to 2024-01-29 19:49:51 UTC

- fix sentence (rust-lang/rustc-dev-guide#1882)
- Some updates for recent diagnostics changes. (rust-lang/rustc-dev-guide#1883)
- Rename occurrences of 'delay_span_bug' to 'span_delayed_bug' (rust-lang/rustc-dev-guide#1881)
- Update for upcoming markdown changes. (rust-lang/rustc-dev-guide#1880)
- Update uses of renamed BoxMeUp to PanicPayload (rust-lang/rustc-dev-guide#1878)
- Add links for arena and interning. (rust-lang/rustc-dev-guide#1868)
- Improving macro expansion section (rust-lang/rustc-dev-guide#1875)
- Replace letters by foo, bar and buz in lexing example (rust-lang/rustc-dev-guide#1870)
- Fix some broken links (rust-lang/rustc-dev-guide#1877)
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Feb 12, 2024
Update books

## rust-lang/edition-guide

1 commits in baafacc6d8701269dab1e1e333f3547fb54b5a59..76bd48a273a0e0413a3bf22c699112d41497b99e
2024-02-10 20:50:34 UTC to 2024-02-10 20:50:34 UTC

- Set up scaffolding for 2024 (rust-lang/edition-guide#288)

## rust-lang/reference

4 commits in a0b119535e7740f68494c4f0582f7ad008b00ccd..8227666de13f6e7bb32dea9dc42e841adb5ce4b7
2024-02-12 03:04:15 UTC to 2024-01-30 20:10:53 UTC

- Fix a typo in external-blocks.md (rust-lang/reference#1467)
- Fix syntax in `'static lifetime elision` section of `lifetime-elision.md` (rust-lang/reference#1463)
- Fix markdown backslash for FLOAT_LITERAL (rust-lang/reference#1464)
- C string literal expressions (rust-lang/reference#1457)

## rust-lang/rust-by-example

5 commits in 179256a445d6144f5f371fdefb993f48f33978b0..e188d5d466f7f3ff9f1d518393235f4fe951be46
2024-02-07 17:16:00 UTC to 2024-01-31 17:34:10 UTC

- Update macros.md (rust-lang/rust-by-example#1815)
- Update borrow.md (rust-lang/rust-by-example#1814)
- Fixes the bug: rust-lang/rust-by-example#1721 (rust-lang/rust-by-example#1811)
- std_misc/process/pipe.md: Fix typo in pangram string (rust-lang/rust-by-example#1809)
- Add expected error behavior into docs (rust-lang/rust-by-example#1810)

## rust-lang/rustc-dev-guide

9 commits in ec287e332777627185be4798ad22599ffe7b84aa..1f30cc7cca9a3433bc1872abdc98960b36c21ca0
2024-02-11 05:36:15 UTC to 2024-01-29 19:49:51 UTC

- fix sentence (rust-lang/rustc-dev-guide#1882)
- Some updates for recent diagnostics changes. (rust-lang/rustc-dev-guide#1883)
- Rename occurrences of 'delay_span_bug' to 'span_delayed_bug' (rust-lang/rustc-dev-guide#1881)
- Update for upcoming markdown changes. (rust-lang/rustc-dev-guide#1880)
- Update uses of renamed BoxMeUp to PanicPayload (rust-lang/rustc-dev-guide#1878)
- Add links for arena and interning. (rust-lang/rustc-dev-guide#1868)
- Improving macro expansion section (rust-lang/rustc-dev-guide#1875)
- Replace letters by foo, bar and buz in lexing example (rust-lang/rustc-dev-guide#1870)
- Fix some broken links (rust-lang/rustc-dev-guide#1877)
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 13, 2024
Rollup merge of rust-lang#120979 - rustbot:docs-update, r=ehuss

Update books

## rust-lang/edition-guide

1 commits in baafacc6d8701269dab1e1e333f3547fb54b5a59..76bd48a273a0e0413a3bf22c699112d41497b99e
2024-02-10 20:50:34 UTC to 2024-02-10 20:50:34 UTC

- Set up scaffolding for 2024 (rust-lang/edition-guide#288)

## rust-lang/reference

4 commits in a0b119535e7740f68494c4f0582f7ad008b00ccd..8227666de13f6e7bb32dea9dc42e841adb5ce4b7
2024-02-12 03:04:15 UTC to 2024-01-30 20:10:53 UTC

- Fix a typo in external-blocks.md (rust-lang/reference#1467)
- Fix syntax in `'static lifetime elision` section of `lifetime-elision.md` (rust-lang/reference#1463)
- Fix markdown backslash for FLOAT_LITERAL (rust-lang/reference#1464)
- C string literal expressions (rust-lang/reference#1457)

## rust-lang/rust-by-example

5 commits in 179256a445d6144f5f371fdefb993f48f33978b0..e188d5d466f7f3ff9f1d518393235f4fe951be46
2024-02-07 17:16:00 UTC to 2024-01-31 17:34:10 UTC

- Update macros.md (rust-lang/rust-by-example#1815)
- Update borrow.md (rust-lang/rust-by-example#1814)
- Fixes the bug: rust-lang/rust-by-example#1721 (rust-lang/rust-by-example#1811)
- std_misc/process/pipe.md: Fix typo in pangram string (rust-lang/rust-by-example#1809)
- Add expected error behavior into docs (rust-lang/rust-by-example#1810)

## rust-lang/rustc-dev-guide

9 commits in ec287e332777627185be4798ad22599ffe7b84aa..1f30cc7cca9a3433bc1872abdc98960b36c21ca0
2024-02-11 05:36:15 UTC to 2024-01-29 19:49:51 UTC

- fix sentence (rust-lang/rustc-dev-guide#1882)
- Some updates for recent diagnostics changes. (rust-lang/rustc-dev-guide#1883)
- Rename occurrences of 'delay_span_bug' to 'span_delayed_bug' (rust-lang/rustc-dev-guide#1881)
- Update for upcoming markdown changes. (rust-lang/rustc-dev-guide#1880)
- Update uses of renamed BoxMeUp to PanicPayload (rust-lang/rustc-dev-guide#1878)
- Add links for arena and interning. (rust-lang/rustc-dev-guide#1868)
- Improving macro expansion section (rust-lang/rustc-dev-guide#1875)
- Replace letters by foo, bar and buz in lexing example (rust-lang/rustc-dev-guide#1870)
- Fix some broken links (rust-lang/rustc-dev-guide#1877)
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Feb 13, 2024
Update books

## rust-lang/edition-guide

1 commits in baafacc6d8701269dab1e1e333f3547fb54b5a59..76bd48a273a0e0413a3bf22c699112d41497b99e
2024-02-10 20:50:34 UTC to 2024-02-10 20:50:34 UTC

- Set up scaffolding for 2024 (rust-lang/edition-guide#288)

## rust-lang/reference

4 commits in a0b119535e7740f68494c4f0582f7ad008b00ccd..8227666de13f6e7bb32dea9dc42e841adb5ce4b7
2024-02-12 03:04:15 UTC to 2024-01-30 20:10:53 UTC

- Fix a typo in external-blocks.md (rust-lang/reference#1467)
- Fix syntax in `'static lifetime elision` section of `lifetime-elision.md` (rust-lang/reference#1463)
- Fix markdown backslash for FLOAT_LITERAL (rust-lang/reference#1464)
- C string literal expressions (rust-lang/reference#1457)

## rust-lang/rust-by-example

5 commits in 179256a445d6144f5f371fdefb993f48f33978b0..e188d5d466f7f3ff9f1d518393235f4fe951be46
2024-02-07 17:16:00 UTC to 2024-01-31 17:34:10 UTC

- Update macros.md (rust-lang/rust-by-example#1815)
- Update borrow.md (rust-lang/rust-by-example#1814)
- Fixes the bug: rust-lang/rust-by-example#1721 (rust-lang/rust-by-example#1811)
- std_misc/process/pipe.md: Fix typo in pangram string (rust-lang/rust-by-example#1809)
- Add expected error behavior into docs (rust-lang/rust-by-example#1810)

## rust-lang/rustc-dev-guide

9 commits in ec287e332777627185be4798ad22599ffe7b84aa..1f30cc7cca9a3433bc1872abdc98960b36c21ca0
2024-02-11 05:36:15 UTC to 2024-01-29 19:49:51 UTC

- fix sentence (rust-lang/rustc-dev-guide#1882)
- Some updates for recent diagnostics changes. (rust-lang/rustc-dev-guide#1883)
- Rename occurrences of 'delay_span_bug' to 'span_delayed_bug' (rust-lang/rustc-dev-guide#1881)
- Update for upcoming markdown changes. (rust-lang/rustc-dev-guide#1880)
- Update uses of renamed BoxMeUp to PanicPayload (rust-lang/rustc-dev-guide#1878)
- Add links for arena and interning. (rust-lang/rustc-dev-guide#1868)
- Improving macro expansion section (rust-lang/rustc-dev-guide#1875)
- Replace letters by foo, bar and buz in lexing example (rust-lang/rustc-dev-guide#1870)
- Fix some broken links (rust-lang/rustc-dev-guide#1877)
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