diff options
| author | Waffle Maybe <waffle.lapkin@gmail.com> | 2024-05-02 04:13:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-02 04:13:57 +0200 |
| commit | 3a40e838bfc22c6415e32fcd94fd48e83e1844b1 (patch) | |
| tree | 37608bf060ebb26ec32caa3b35e69deef527acf8 | |
| parent | b73bfd26e4ddd6e91debf86cbaeb060e7fbb4425 (diff) | |
| download | rust-3a40e838bfc22c6415e32fcd94fd48e83e1844b1.tar.gz rust-3a40e838bfc22c6415e32fcd94fd48e83e1844b1.zip | |
Apply suggestions from code review
Co-authored-by: Kevin Reid <kpreid@switchb.org> Co-authored-by: Herman Skogseth <herman.skogseth@me.com> Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
| -rw-r--r-- | library/core/src/primitive_docs.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/library/core/src/primitive_docs.rs b/library/core/src/primitive_docs.rs index 1839c56f16d..d9c81239fc4 100644 --- a/library/core/src/primitive_docs.rs +++ b/library/core/src/primitive_docs.rs @@ -270,8 +270,8 @@ mod prim_bool {} /// /// # Never type fallback /// -/// When the compiler sees a value of type `!` it implicitly inserts a coercion (if possible) -/// to allow type checker to infer any type: +/// When the compiler sees a value of type `!` in a [coercion site](https://doc.rust-lang.org/reference/type-coercions.html#coercion-sites), it implicitly inserts a coercion +/// to allow the type checker to infer any type: /// /// ```rust,ignore (illustrative-and-has-placeholders) /// // this @@ -286,8 +286,7 @@ mod prim_bool {} // FIXME: use `core::convert::absurd` here instead, once it's merged /// ``` /// -/// While it's convenient to be able to use non-diverging code in one of the branches (like -/// `if a { b } else { return }`) this could lead to compilation errors: +/// This can lead to compilation errors if the type cannot be inferred: /// /// ```compile_fail /// // this @@ -298,7 +297,7 @@ mod prim_bool {} /// ``` /// /// To prevent such errors, the compiler remembers where it inserted `absurd` calls, and -/// if it can't infer their type, it sets the type to the fallback type: +/// if it can't infer the type, it uses the fallback type instead: /// ```rust, ignore /// type Fallback = /* An arbitrarily selected type! */; /// { absurd::<Fallback>(panic!()) } @@ -306,9 +305,9 @@ mod prim_bool {} /// /// This is what is known as "never type fallback". /// -/// Historically fallback was [`()`], causing confusing behavior where `!` spontaneously coerced -/// to `()`, even though `()` was never mentioned (because of the fallback). There are plans to -/// change it in 2024 edition (and possibly in all editions on a later date), see +/// Historically, the fallback type was [`()`], causing confusing behavior where `!` spontaneously coerced +/// to `()`, even when it would not infer `()` without the fallback. There are plans to +/// change it in the [2024 edition](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html) (and possibly in all editions on a later date); see /// [Tracking Issue for making `!` fall back to `!`][fallback-ti]. /// /// [`()`]: prim@unit |
