Skip to content

Commit 3a5e669

Browse files
committed
Rename Receiver -> LegacyReceiver
As part of the "arbitrary self types v2" project, we are going to replace the current `Receiver` trait with a new mechanism based on a new, different `Receiver` trait. This PR renames the old trait to get it out the way. Naming is hard. Options considered included: * HardCodedReceiver (because it should only be used for things in the standard library, and hence is sort-of hard coded) * LegacyReceiver * TargetLessReceiver * OldReceiver These are all bad names, but fortunately this will be temporary. Assuming the new mechanism proceeds to stabilization as intended, the legacy trait will be removed altogether. Although we expect this trait to be used only in the standard library, we suspect it may be in use elsehwere, so we're landing this change separately to identify any surprising breakages. It's known that this trait is used within the Rust for Linux project; a patch is in progress to remove their dependency. This is a part of the arbitrary self types v2 project, rust-lang/rfcs#3519 rust-lang#44874 r? @wesleywiser
1 parent 507193a commit 3a5e669

File tree

7 files changed

+28
-22
lines changed

7 files changed

+28
-22
lines changed

alloc/src/boxed.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ use core::marker::{Tuple, Unsize};
196196
use core::mem::{self, SizedTypeProperties};
197197
use core::ops::{
198198
AsyncFn, AsyncFnMut, AsyncFnOnce, CoerceUnsized, Coroutine, CoroutineState, Deref, DerefMut,
199-
DerefPure, DispatchFromDyn, Receiver,
199+
DerefPure, DispatchFromDyn, LegacyReceiver,
200200
};
201201
use core::pin::{Pin, PinCoerceUnsized};
202202
use core::ptr::{self, NonNull, Unique};
@@ -2378,8 +2378,8 @@ impl<T: ?Sized, A: Allocator> DerefMut for Box<T, A> {
23782378
#[unstable(feature = "deref_pure_trait", issue = "87121")]
23792379
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Box<T, A> {}
23802380

2381-
#[unstable(feature = "receiver_trait", issue = "none")]
2382-
impl<T: ?Sized, A: Allocator> Receiver for Box<T, A> {}
2381+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2382+
impl<T: ?Sized, A: Allocator> LegacyReceiver for Box<T, A> {}
23832383

23842384
#[stable(feature = "rust1", since = "1.0.0")]
23852385
impl<I: Iterator + ?Sized, A: Allocator> Iterator for Box<I, A> {

alloc/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
#![feature(iter_advance_by)]
130130
#![feature(iter_next_chunk)]
131131
#![feature(layout_for_ptr)]
132+
#![feature(legacy_receiver_trait)]
132133
#![feature(local_waker)]
133134
#![feature(maybe_uninit_slice)]
134135
#![feature(maybe_uninit_uninit_array_transpose)]
@@ -138,7 +139,6 @@
138139
#![feature(ptr_internals)]
139140
#![feature(ptr_metadata)]
140141
#![feature(ptr_sub_ptr)]
141-
#![feature(receiver_trait)]
142142
#![feature(set_ptr_value)]
143143
#![feature(sized_type_properties)]
144144
#![feature(slice_from_ptr_range)]

alloc/src/rc.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ use core::intrinsics::abort;
252252
use core::iter;
253253
use core::marker::{PhantomData, Unsize};
254254
use core::mem::{self, ManuallyDrop, align_of_val_raw};
255-
use core::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, Receiver};
255+
use core::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, LegacyReceiver};
256256
use core::panic::{RefUnwindSafe, UnwindSafe};
257257
#[cfg(not(no_global_oom_handling))]
258258
use core::pin::Pin;
@@ -2222,8 +2222,8 @@ unsafe impl<T: ?Sized, A: Allocator> PinCoerceUnsized for Weak<T, A> {}
22222222
#[unstable(feature = "deref_pure_trait", issue = "87121")]
22232223
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Rc<T, A> {}
22242224

2225-
#[unstable(feature = "receiver_trait", issue = "none")]
2226-
impl<T: ?Sized> Receiver for Rc<T> {}
2225+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2226+
impl<T: ?Sized> LegacyReceiver for Rc<T> {}
22272227

22282228
#[stable(feature = "rust1", since = "1.0.0")]
22292229
unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Rc<T, A> {

alloc/src/sync.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use core::intrinsics::abort;
1818
use core::iter;
1919
use core::marker::{PhantomData, Unsize};
2020
use core::mem::{self, ManuallyDrop, align_of_val_raw};
21-
use core::ops::{CoerceUnsized, Deref, DerefPure, DispatchFromDyn, Receiver};
21+
use core::ops::{CoerceUnsized, Deref, DerefPure, DispatchFromDyn, LegacyReceiver};
2222
use core::panic::{RefUnwindSafe, UnwindSafe};
2323
use core::pin::{Pin, PinCoerceUnsized};
2424
use core::ptr::{self, NonNull};
@@ -2189,8 +2189,8 @@ unsafe impl<T: ?Sized, A: Allocator> PinCoerceUnsized for Weak<T, A> {}
21892189
#[unstable(feature = "deref_pure_trait", issue = "87121")]
21902190
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Arc<T, A> {}
21912191

2192-
#[unstable(feature = "receiver_trait", issue = "none")]
2193-
impl<T: ?Sized> Receiver for Arc<T> {}
2192+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2193+
impl<T: ?Sized> LegacyReceiver for Arc<T> {}
21942194

21952195
#[cfg(not(no_global_oom_handling))]
21962196
impl<T: ?Sized + CloneToUninit, A: Allocator + Clone> Arc<T, A> {

core/src/ops/deref.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,21 @@ unsafe impl<T: ?Sized> DerefPure for &mut T {}
297297
/// Indicates that a struct can be used as a method receiver, without the
298298
/// `arbitrary_self_types` feature. This is implemented by stdlib pointer types like `Box<T>`,
299299
/// `Rc<T>`, `&T`, and `Pin<P>`.
300-
#[lang = "receiver"]
301-
#[unstable(feature = "receiver_trait", issue = "none")]
300+
///
301+
/// This trait will shortly be removed and replaced with a more generic
302+
/// facility based around the current "arbitrary self types" unstable feature.
303+
/// That new facility will use a replacement trait called `Receiver` which is
304+
/// why this is now named `LegacyReceiver`.
305+
#[cfg_attr(bootstrap, lang = "receiver")]
306+
#[cfg_attr(not(bootstrap), lang = "legacy_receiver")]
307+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
302308
#[doc(hidden)]
303-
pub trait Receiver {
309+
pub trait LegacyReceiver {
304310
// Empty.
305311
}
306312

307-
#[unstable(feature = "receiver_trait", issue = "none")]
308-
impl<T: ?Sized> Receiver for &T {}
313+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
314+
impl<T: ?Sized> LegacyReceiver for &T {}
309315

310-
#[unstable(feature = "receiver_trait", issue = "none")]
311-
impl<T: ?Sized> Receiver for &mut T {}
316+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
317+
impl<T: ?Sized> LegacyReceiver for &mut T {}

core/src/ops/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ pub use self::control_flow::ControlFlow;
168168
pub use self::coroutine::{Coroutine, CoroutineState};
169169
#[unstable(feature = "deref_pure_trait", issue = "87121")]
170170
pub use self::deref::DerefPure;
171-
#[unstable(feature = "receiver_trait", issue = "none")]
172-
pub use self::deref::Receiver;
171+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
172+
pub use self::deref::LegacyReceiver;
173173
#[stable(feature = "rust1", since = "1.0.0")]
174174
pub use self::deref::{Deref, DerefMut};
175175
#[stable(feature = "rust1", since = "1.0.0")]

core/src/pin.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,7 @@
921921
#![stable(feature = "pin", since = "1.33.0")]
922922

923923
use crate::hash::{Hash, Hasher};
924-
use crate::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, Receiver};
924+
use crate::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, LegacyReceiver};
925925
#[allow(unused_imports)]
926926
use crate::{
927927
cell::{RefCell, UnsafeCell},
@@ -1692,8 +1692,8 @@ impl<Ptr: DerefMut<Target: Unpin>> DerefMut for Pin<Ptr> {
16921692
#[unstable(feature = "deref_pure_trait", issue = "87121")]
16931693
unsafe impl<Ptr: DerefPure> DerefPure for Pin<Ptr> {}
16941694

1695-
#[unstable(feature = "receiver_trait", issue = "none")]
1696-
impl<Ptr: Receiver> Receiver for Pin<Ptr> {}
1695+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
1696+
impl<Ptr: LegacyReceiver> LegacyReceiver for Pin<Ptr> {}
16971697

16981698
#[stable(feature = "pin", since = "1.33.0")]
16991699
impl<Ptr: fmt::Debug> fmt::Debug for Pin<Ptr> {

0 commit comments

Comments
 (0)