-
-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow #[pin_project(!Unpin)] to impl !Unpin
#344
Comments
I'm not opposed to supporting unstable features under an explicit option. However, negative_impls breaks pin_project's soundness (#340), so I prefer not to provide features that require negative_impls to be enabled until that problem is fixed. |
#340 has been fixed so I mark this as no longer blocked. That said, we now know that there is a way to emulate full native_impls on stable Rust (#340 (comment)), so we can also consider using that in |
Btw, the same trick observed in #340 would allow to perform a negative impl here, without needing an unstable feature (although an opt-in for the proper unstable feature usage would probably be desirable). See https://docs.rs/negative for a PoC |
Suppose I have the following trait definition:
And I use it from another crate. Then this will not have overlapping impls:
... because Rust understands that this doesn't overlap with the blanket impl in the trait definition. But this will not work:
Nor will any other trick that isn't a straight up
impl !Unpin
.Right now, if you use
pin_project
with a struct, you cannotimpl !Unpin
for that struct, which means that struct cannot implementTrait
if it does not fall under the blanket impl. Would you accept a PR adding some way toimpl !Unpin
? For example, something like:( In particular, I want this for https://github.com/google/crubit/blob/main/rs_bindings_from_cc/support/ctor.rs )
The text was updated successfully, but these errors were encountered: