IssueRaiser

Tracking issue for negative impls

Generalized negative impls were introduced in https://github.com/rust-lang/rust/pull/68004. They were split out from "opt-in builtin traits" (https://github.com/rust-lang/rust/issues/13231). ### About tracking issues Tracking issues are used to record the overall progress of implementation. They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions. A tracking issue is however *not* meant for large scale discussion, questions, or bug reports about a feature. Instead, open a dedicated issue for the specific matter and add the relevant feature gate label. ### Work in progress This issue was added in advance of #68004 landed so that I could reference it from within the code. It will be closed if we opt not to go this direction. A writeup of the general feature is available in [this hackmd](https://hackmd.io/2FYm23s0R-igRnTLaFoo8w), but it will need to be turned into a proper RFC before this can truly advance. ### Current plans * [ ] Forbid conditional negative impls or negative impls for traits with more than one type parameter (https://github.com/rust-lang/rust/issues/79098) * [ ] Forbid `!Drop` (negative impls of `Drop`) ### Unresolved questions to be addressed through design process * What should the WF requirements be? ([Context](https://github.com/rust-lang/rust/pull/68004#discussion_r367586615)) * Should we permit combining default + negative impls like `default impl !Trait for Type { }`? ([Context](https://github.com/rust-

Posted by nikomatsakis on Jan 17, 2020, 7:32 PM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.3,500 issues0 comments

github (Software)

Tracking issue for negative impls

nikomatsakisJan 17, 2020, 7:32 PM

Generalized negative impls were introduced in https://github.com/rust-lang/rust/pull/68004. They were split out from "opt-in builtin traits" (https://github.com/rust-lang/rust/issues/13231). ### About tracking issues Tracking issues are used to record the overall progress of implementation. They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions. A tracking issue is however *not* meant for large scale discussion, questions, or bug reports about a feature. Instead, open a dedicated issue for the specific matter and add the relevant feature gate label. ### Work in progress This issue was added in advance of #68004 landed so that I could reference it from within the code. It will be closed if we opt not to go this direction. A writeup of the general feature is available in [this hackmd](https://hackmd.io/2FYm23s0R-igRnTLaFoo8w), but it will need to be turned into a proper RFC before this can truly advance. ### Current plans * [ ] Forbid conditional negative impls or negative impls for traits with more than one type parameter (https://github.com/rust-lang/rust/issues/79098) * [ ] Forbid `!Drop` (negative impls of `Drop`) ### Unresolved questions to be addressed through design process * What should the WF requirements be? ([Context](https://github.com/rust-lang/rust/pull/68004#discussion_r367586615)) * Should we permit combining default + negative impls like `default impl !Trait for Type { }`? ([Context](https://github.com/rust-

Comments (0)

No comments yet. Start the discussion.

Comment on this issue