Merge pull request #1012 from canndrew/never-rewording

Reword description of how ! coerces into other types
This commit is contained in:
Carol (Nichols || Goulding)
2017-11-28 10:39:39 -05:00
committed by GitHub

View File

@@ -213,11 +213,11 @@ As you may have guessed, `continue` has a value of `!`. That is, when Rust goes
to compute the type of `guess`, it looks at both of the match arms. The former
has a value of `u32`, and the latter has a value of `!`. Since `!` can never
have a value, Rust is okay with this, and decides that the type of `guess` is
`u32`. The formal way of describing this behavior of `!` is that the never type
unifies with all other types. Were allowed to end this `match` arm with
`continue` because `continue` doesnt actually return a value; it instead moves
control back to the top of the loop, so in the `Err` case, we never actually
assign a value to `guess`.
`u32`. The formal way of describing this behavior is that expressions of type
`!` can be coerced into any other type. Were allowed to end this `match` arm
with `continue` because `continue` doesnt actually return a value; it instead
moves control back to the top of the loop, so in the `Err` case, we never
actually assign a value to `guess`.
Another use of the never type is `panic!`. Remember the `unwrap` function that
we call on `Option<T>` values to produce a value or panic? Heres its