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
Currently, if the validity invariant is Initialized and the validity variance is Invariant, the returned pointer will have the validity invariant Any. However, this throws away information: regardless of the specific validity requirements of a type, if all of the outer type's bytes are initialized, then the same is true of the inner type's bytes. In other words, the Initialized validity invariant should be preserved regardless of the validity variance.
In the general case, what we really need is the ability to express a generic mapping (Invariant, Variance) -> Invariant, which would allow us to express this behavior.
In other conversion functions, each invariant can be mapped as either:
Preserve the invariant
Map to a fixed invariant
These conversion functions could similarly benefit from a generic mapping Invariant -> Invariant.
The text was updated successfully, but these errors were encountered:
See also: #1359
Consider
Ptr::transparent_wrapper_into_inner
:zerocopy/src/pointer/ptr.rs
Lines 609 to 627 in be56a3a
Currently, if the validity invariant is
Initialized
and the validity variance isInvariant
, the returned pointer will have the validity invariantAny
. However, this throws away information: regardless of the specific validity requirements of a type, if all of the outer type's bytes are initialized, then the same is true of the inner type's bytes. In other words, theInitialized
validity invariant should be preserved regardless of the validity variance.In the general case, what we really need is the ability to express a generic mapping
(Invariant, Variance) -> Invariant
, which would allow us to express this behavior.In other conversion functions, each invariant can be mapped as either:
These conversion functions could similarly benefit from a generic mapping
Invariant -> Invariant
.The text was updated successfully, but these errors were encountered: