Implement AnyBitPattern for MaybeUninit<T> where T: AnyBitPattern. #160
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(Partially) resolves #108 .
A feature flag is required because
MaybeUninit
was unstable in bytemuck's MSRV. I just used the#[cfg(feature = "zeroable_maybe_uninit")]
flag since that's required anyway, and it didn't seem reasonable to add another feature flag for this.As discussed in #152 , it is probably unsound to have
MaybeUninit<T>
implementAnyBitPattern
whenT
contains interior mutability, so a blanketimpl<T: Copy + 'static> AnyBitPattern for MaybeUninit<T>
would be unsound under that reasoning. However, ifT
implementsAnyBitPattern
, then it is known to not have any interior mutability, soT: AnyBitPattern
is a sufficient (but not necessary) condition forMaybeUninit<T>: AnyBitPattern
to be sound.Since
T: AnyBitPattern
sufficient-but-not-necessary requirement, it could be relaxed later, e.g. if APIs aroundFreeze
become available.