Update E0744 about control flow in const contexts to reflect the current status of const fn.

This is a squash of these commits:
- Update E0744 about control flow in `const` contexts to reflect current status of `const fn`.
- E0744 isn't just about `for` loops or control flow
- Fix formatting on E0744 cause my editor decided to not copy it well
- Improve wording
- Fix a markdown formatting error
- Fix E0744's description as I interpreted some code wrong
- Fix a minor wording issue again
- Add a few more links to blocking issues
- Improve links to tracking issues
This commit is contained in:
James 2020-11-15 20:34:16 -06:00 committed by ThePuzzlemaker
parent f5230fbf76
commit 0bc04e327c
No known key found for this signature in database
GPG Key ID: 968CD9D71C9FBB6C

View File

@ -1,4 +1,4 @@
A control-flow expression was used inside a const context. An unsupported expression was used inside a const context.
Erroneous code example: Erroneous code example:
@ -12,12 +12,15 @@ const _: i32 = {
}; };
``` ```
At the moment, `if` and `match`, as well as the looping constructs `for`, At the moment, `for` loops, `.await`, and the `Try` operator (`?`) are forbidden
`while`, and `loop`, are forbidden inside a `const`, `static`, or `const fn`. inside a `const`, `static`, or `const fn`.
This will be allowed at some point in the future, but the implementation is not This may be allowed at some point in the future, but the implementation is not
yet complete. See the tracking issue for [conditionals] or [loops] in a const yet complete. See the tracking issues for [`async`] and [`?`] in `const fn`, and
context for the current status. (to support `for` loops in `const fn`) the tracking issues for [`impl const
Trait for Ty`] and [`&mut T`] in `const fn`.
[conditionals]: https://github.com/rust-lang/rust/issues/49146 [`async`]: https://github.com/rust-lang/rust/issues/69431
[loops]: https://github.com/rust-lang/rust/issues/52000 [`?`]: https://github.com/rust-lang/rust/issues/74935
[`impl const Trait for Ty`]: https://github.com/rust-lang/rust/issues/67792
[`&mut T`]: https://github.com/rust-lang/rust/issues/57349