-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Summary issue - stabilization of ! #48950
Copy link
Copy link
Closed
Labels
A-inferenceArea: Type inferenceArea: Type inferenceA-type-systemArea: Type systemArea: Type systemC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-langRelevant to the language teamRelevant to the language team
Metadata
Metadata
Assignees
Labels
A-inferenceArea: Type inferenceArea: Type inferenceA-type-systemArea: Type systemArea: Type systemC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-langRelevant to the language teamRelevant to the language team
Type
Fields
Give feedbackNo fields configured for issues without a type.
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.