It's only an issue without an impl Trait for !

This commit is contained in:
Camelid 2020-08-29 20:41:36 -07:00 committed by GitHub
parent fd985e29dd
commit 0d9a2abe69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -194,9 +194,9 @@ mod prim_bool {}
/// # `!` and traits
///
/// When writing your own traits, `!` should have an `impl` whenever there is an obvious `impl`
/// which doesn't `panic!`. The reason is that functions returning an `impl Trait` cannot diverge,
/// i.e., returning `!`, as their only possible code path. As an example, this code doesn't
/// compile:
/// which doesn't `panic!`. The reason is that functions returning an `impl Trait` where `!`
/// does not have an `impl` of `Trait` cannot diverge as their only possible code path. In other
/// words, they can't return `!` from every code path. As an example, this code doesn't compile:
///
/// ```compile_fail
/// use core::ops::Add;
@ -206,7 +206,7 @@ mod prim_bool {}
/// }
/// ```
///
/// While this code does:
/// But this code does:
///
/// ```
/// use core::ops::Add;