mirror of
https://github.com/Lokathor/bytemuck.git
synced 2024-11-21 22:32:23 +00:00
More TransparentWrapper
impls (core::cmp::Reverse
and core::num::Saturating
) (#269)
* impl<T> TransparentWrapper<T> for core::cmp::Reverse<T> * impl<T> TransparentWrapper<T> for core::num::Saturating<T>, with a new feature for non-base-MSRV stdlib TransparentWrapper impls. * Restrict TransparentWrapper<T> for Reverse<T> to cfg(feature = "transparentwrapper_extra"). * nightly_docs for transparent_wrapper_extra --------- Co-authored-by: Lokathor <zefria@gmail.com>
This commit is contained in:
parent
79a15d0a3f
commit
af8d110201
@ -40,6 +40,11 @@ aarch64_simd = [] # MSRV 1.59.0: support aarch64 simd types
|
|||||||
|
|
||||||
must_cast = [] # MSRV 1.64.0: support the `must` module.
|
must_cast = [] # MSRV 1.64.0: support the `must` module.
|
||||||
|
|
||||||
|
# Adds `TransparentWrapper` impls for stdlib types newer than bytemuck's base MSRV.
|
||||||
|
# Current MSRV 1.74.0: `core::num::Saturating`.
|
||||||
|
# MSRV may increase if impls are added for newer types.
|
||||||
|
transparentwrapper_extra = []
|
||||||
|
|
||||||
const_zeroed = [] # MSRV 1.75.0: support const `zeroed()`
|
const_zeroed = [] # MSRV 1.75.0: support const `zeroed()`
|
||||||
|
|
||||||
# Do not use if you can avoid it, because this is **unsound**!!!!
|
# Do not use if you can avoid it, because this is **unsound**!!!!
|
||||||
|
@ -303,3 +303,20 @@ pub unsafe trait TransparentWrapper<Inner: ?Sized> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl<T> TransparentWrapper<T> for core::num::Wrapping<T> {}
|
unsafe impl<T> TransparentWrapper<T> for core::num::Wrapping<T> {}
|
||||||
|
#[cfg(feature = "transparentwrapper_extra")]
|
||||||
|
#[cfg_attr(
|
||||||
|
feature = "nightly_docs",
|
||||||
|
doc(cfg(feature = "transparentwrapper_extra"))
|
||||||
|
)]
|
||||||
|
unsafe impl<T> TransparentWrapper<T> for core::num::Saturating<T> {}
|
||||||
|
|
||||||
|
// Note that `Reverse` existed since Rust 1.19.0, but was only made `#[repr(transparent)]`
|
||||||
|
// in Rust 1.52.0 (PR: https://github.com/rust-lang/rust/pull/81879), so we have it under
|
||||||
|
// the same feature as `Saturating`, which was stabilized in Rust 1.74.0, so that this
|
||||||
|
// impl cannot be used on a version before 1.52.0 where it would be unsound.
|
||||||
|
#[cfg(feature = "transparentwrapper_extra")]
|
||||||
|
#[cfg_attr(
|
||||||
|
feature = "nightly_docs",
|
||||||
|
doc(cfg(feature = "transparentwrapper_extra"))
|
||||||
|
)]
|
||||||
|
unsafe impl<T> TransparentWrapper<T> for core::cmp::Reverse<T> {}
|
||||||
|
Loading…
Reference in New Issue
Block a user