diff --git a/src/pointer/invariant.rs b/src/pointer/invariant.rs index 3a26b76e24..f8d184b02c 100644 --- a/src/pointer/invariant.rs +++ b/src/pointer/invariant.rs @@ -155,27 +155,22 @@ unsafe impl CastableFrom f /// /// As a consequence, if `T: Read`, then any `Ptr` is /// permitted to perform unsynchronized reads from its referent. -pub trait Read {} +pub trait Read {} impl Read for T {} impl Read for T {} -/// Used to disambiguate [`Read`] impls. -pub trait ReadReason: Sealed {} - /// Unsynchronized reads are permitted because only one live [`Ptr`](crate::Ptr) /// or reference may exist to the referent bytes at a time. #[derive(Copy, Clone, Debug)] #[doc(hidden)] pub enum BecauseExclusive {} -impl ReadReason for BecauseExclusive {} /// Unsynchronized reads are permitted because no live [`Ptr`](crate::Ptr)s or /// references permit interior mutation. #[derive(Copy, Clone, Debug)] #[doc(hidden)] pub enum BecauseImmutable {} -impl ReadReason for BecauseImmutable {} use sealed::Sealed; mod sealed { diff --git a/src/pointer/mod.rs b/src/pointer/mod.rs index ccc23aa8cb..00fdcb0af4 100644 --- a/src/pointer/mod.rs +++ b/src/pointer/mod.rs @@ -14,7 +14,7 @@ pub mod invariant; mod ptr; #[doc(hidden)] -pub use invariant::{BecauseExclusive, BecauseImmutable, Read, ReadReason}; +pub use invariant::{BecauseExclusive, BecauseImmutable, Read}; #[doc(hidden)] pub use ptr::Ptr; @@ -48,7 +48,6 @@ where pub fn read_unaligned(self) -> T where T: Copy, - R: invariant::ReadReason, T: invariant::Read, { // SAFETY: By invariant on `MaybeAligned`, `raw` contains diff --git a/src/pointer/ptr.rs b/src/pointer/ptr.rs index 538bede8d9..9d1c10261c 100644 --- a/src/pointer/ptr.rs +++ b/src/pointer/ptr.rs @@ -805,7 +805,6 @@ mod _transitions { T: TryFromBytes + Read, I::Aliasing: Reference, I: Invariants, - R: crate::pointer::ReadReason, { // This call may panic. If that happens, it doesn't cause any soundness // issues, as we have not generated any invalid state which we need to @@ -897,8 +896,6 @@ mod _casts { where T: Read, U: 'a + ?Sized + Read + CastableFrom, - R: ReadReason, - S: ReadReason, F: FnOnce(*mut T) -> *mut U, { // SAFETY: Because `T` and `U` both implement `Read`, @@ -921,7 +918,6 @@ mod _casts { #[allow(clippy::wrong_self_convention)] pub(crate) fn as_bytes(self) -> Ptr<'a, [u8], (I::Aliasing, Aligned, Valid)> where - R: ReadReason, T: Read, I::Aliasing: Reference, { @@ -1019,7 +1015,6 @@ mod _casts { CastError, > where - R: ReadReason, I::Aliasing: Reference, U: 'a + ?Sized + KnownLayout + Read, { @@ -1082,7 +1077,6 @@ mod _casts { where I::Aliasing: Reference, U: 'a + ?Sized + KnownLayout + Read, - R: ReadReason, { // TODO(#67): Remove this allow. See NonNulSlicelExt for more // details. diff --git a/src/util/macro_util.rs b/src/util/macro_util.rs index 57060e2ac3..7db924fb59 100644 --- a/src/util/macro_util.rs +++ b/src/util/macro_util.rs @@ -25,7 +25,7 @@ use core::mem::{self, ManuallyDrop}; use core::ptr::{self, NonNull}; use crate::{ - pointer::invariant::{self, BecauseExclusive, BecauseImmutable, Invariants, ReadReason}, + pointer::invariant::{self, BecauseExclusive, BecauseImmutable, Invariants}, FromBytes, Immutable, IntoBytes, Ptr, TryFromBytes, ValidityError, }; @@ -561,7 +561,6 @@ where Dst: TryFromBytes + invariant::Read, I: Invariants, I::Aliasing: invariant::Reference, - R: ReadReason, { static_assert!(Src, Dst => mem::size_of::() == mem::size_of::());