Skip to content

Commit 2570f56

Browse files
authored
[pointer] Remove ReadReason from Read trait (#2409)
gherrit-pr-id: I7694dcd7b9c01e25ac8ad9ee1915de16dbc00fdd
1 parent 383f8c8 commit 2570f56

File tree

4 files changed

+3
-16
lines changed

4 files changed

+3
-16
lines changed

src/pointer/invariant.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,27 +155,22 @@ unsafe impl<ST: ?Sized, DT: ?Sized> CastableFrom<ST, Initialized, Initialized> f
155155
///
156156
/// As a consequence, if `T: Read<A, R>`, then any `Ptr<T, (A, ...)>` is
157157
/// permitted to perform unsynchronized reads from its referent.
158-
pub trait Read<A: Aliasing, R: ReadReason> {}
158+
pub trait Read<A: Aliasing, R> {}
159159

160160
impl<A: Aliasing, T: ?Sized + crate::Immutable> Read<A, BecauseImmutable> for T {}
161161
impl<T: ?Sized> Read<Exclusive, BecauseExclusive> for T {}
162162

163-
/// Used to disambiguate [`Read`] impls.
164-
pub trait ReadReason: Sealed {}
165-
166163
/// Unsynchronized reads are permitted because only one live [`Ptr`](crate::Ptr)
167164
/// or reference may exist to the referent bytes at a time.
168165
#[derive(Copy, Clone, Debug)]
169166
#[doc(hidden)]
170167
pub enum BecauseExclusive {}
171-
impl ReadReason for BecauseExclusive {}
172168

173169
/// Unsynchronized reads are permitted because no live [`Ptr`](crate::Ptr)s or
174170
/// references permit interior mutation.
175171
#[derive(Copy, Clone, Debug)]
176172
#[doc(hidden)]
177173
pub enum BecauseImmutable {}
178-
impl ReadReason for BecauseImmutable {}
179174

180175
use sealed::Sealed;
181176
mod sealed {

src/pointer/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub mod invariant;
1414
mod ptr;
1515

1616
#[doc(hidden)]
17-
pub use invariant::{BecauseExclusive, BecauseImmutable, Read, ReadReason};
17+
pub use invariant::{BecauseExclusive, BecauseImmutable, Read};
1818
#[doc(hidden)]
1919
pub use ptr::Ptr;
2020

@@ -48,7 +48,6 @@ where
4848
pub fn read_unaligned<R>(self) -> T
4949
where
5050
T: Copy,
51-
R: invariant::ReadReason,
5251
T: invariant::Read<Aliasing, R>,
5352
{
5453
// SAFETY: By invariant on `MaybeAligned`, `raw` contains

src/pointer/ptr.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,6 @@ mod _transitions {
805805
T: TryFromBytes + Read<I::Aliasing, R>,
806806
I::Aliasing: Reference,
807807
I: Invariants<Validity = Initialized>,
808-
R: crate::pointer::ReadReason,
809808
{
810809
// This call may panic. If that happens, it doesn't cause any soundness
811810
// issues, as we have not generated any invalid state which we need to
@@ -897,8 +896,6 @@ mod _casts {
897896
where
898897
T: Read<I::Aliasing, R>,
899898
U: 'a + ?Sized + Read<I::Aliasing, S> + CastableFrom<T, I::Validity, I::Validity>,
900-
R: ReadReason,
901-
S: ReadReason,
902899
F: FnOnce(*mut T) -> *mut U,
903900
{
904901
// SAFETY: Because `T` and `U` both implement `Read<I::Aliasing, _>`,
@@ -921,7 +918,6 @@ mod _casts {
921918
#[allow(clippy::wrong_self_convention)]
922919
pub(crate) fn as_bytes<R>(self) -> Ptr<'a, [u8], (I::Aliasing, Aligned, Valid)>
923920
where
924-
R: ReadReason,
925921
T: Read<I::Aliasing, R>,
926922
I::Aliasing: Reference,
927923
{
@@ -1019,7 +1015,6 @@ mod _casts {
10191015
CastError<Self, U>,
10201016
>
10211017
where
1022-
R: ReadReason,
10231018
I::Aliasing: Reference,
10241019
U: 'a + ?Sized + KnownLayout + Read<I::Aliasing, R>,
10251020
{
@@ -1082,7 +1077,6 @@ mod _casts {
10821077
where
10831078
I::Aliasing: Reference,
10841079
U: 'a + ?Sized + KnownLayout + Read<I::Aliasing, R>,
1085-
R: ReadReason,
10861080
{
10871081
// TODO(#67): Remove this allow. See NonNulSlicelExt for more
10881082
// details.

src/util/macro_util.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use core::mem::{self, ManuallyDrop};
2525
use core::ptr::{self, NonNull};
2626

2727
use crate::{
28-
pointer::invariant::{self, BecauseExclusive, BecauseImmutable, Invariants, ReadReason},
28+
pointer::invariant::{self, BecauseExclusive, BecauseImmutable, Invariants},
2929
FromBytes, Immutable, IntoBytes, Ptr, TryFromBytes, ValidityError,
3030
};
3131

@@ -561,7 +561,6 @@ where
561561
Dst: TryFromBytes + invariant::Read<I::Aliasing, R>,
562562
I: Invariants<Validity = invariant::Initialized>,
563563
I::Aliasing: invariant::Reference,
564-
R: ReadReason,
565564
{
566565
static_assert!(Src, Dst => mem::size_of::<Dst>() == mem::size_of::<Src>());
567566

0 commit comments

Comments
 (0)