You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Type inference will now default unconstrained type variables to ! instead of (). The resolve_trait_on_defaulted_unit lint has been retired. An example of where this comes up is if you have something like:
// We didn't specify the type of `x`. Under some circumstances, type inference// will pick a type for us rather than erroringlet x = Deserialize::deserialize(data);
Under the old rules this would deserialize a (), whereas under the new rules it will deserialize a !.
The never_type feature gate is stable, although some of the behaviours it used to gate now live behind the new exhaustive_patterns feature gate (see below).
What is not being stabilized
Exhaustive pattern-matching for uninhabited types. eg.
What is being stabilized
!is now a full-fledged type and can now be used in any type position (eg. RFC 1216). The!type can coerce into any other type, see https://github.com/rust-lang/rust/tree/master/src/test/run-fail/adjust_never.rs for an example.Type inference will now default unconstrained type variables to
!instead of(). Theresolve_trait_on_defaulted_unitlint has been retired. An example of where this comes up is if you have something like:Under the old rules this would deserialize a
(), whereas under the new rules it will deserialize a!.The
never_typefeature gate is stable, although some of the behaviours it used to gate now live behind the newexhaustive_patternsfeature gate (see below).What is not being stabilized
Exhaustive pattern-matching for uninhabited types. eg.
This code will still complain that
Ok(_)is a refutable pattern. This can be fixed by using theexhaustive_patternsfeature gate. See RFC 1872 for progress on this issue. See https://github.com/rust-lang/rust/tree/master/src/test/ui/feature-gate-exhaustive-patterns.rs for the testcase which confirms that this behaviour is still gated.