|
252 | 252 |
|
253 | 253 | use crate::cmp::Ordering;
|
254 | 254 | use crate::fmt::{self, Debug, Display};
|
255 |
| -use crate::marker::{PhantomData, Unsize}; |
| 255 | +use crate::marker::{PhantomData, PointerLike, Unsize}; |
256 | 256 | use crate::mem;
|
257 | 257 | use crate::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn};
|
258 | 258 | use crate::pin::PinCoerceUnsized;
|
@@ -677,6 +677,9 @@ impl<T: CoerceUnsized<U>, U> CoerceUnsized<Cell<U>> for Cell<T> {}
|
677 | 677 | #[unstable(feature = "dispatch_from_dyn", issue = "none")]
|
678 | 678 | impl<T: DispatchFromDyn<U>, U> DispatchFromDyn<Cell<U>> for Cell<T> {}
|
679 | 679 |
|
| 680 | +#[unstable(feature = "pointer_like_trait", issue = "none")] |
| 681 | +impl<T: PointerLike> PointerLike for Cell<T> {} |
| 682 | + |
680 | 683 | impl<T> Cell<[T]> {
|
681 | 684 | /// Returns a `&[Cell<T>]` from a `&Cell<[T]>`
|
682 | 685 | ///
|
@@ -2258,6 +2261,9 @@ impl<T: CoerceUnsized<U>, U> CoerceUnsized<UnsafeCell<U>> for UnsafeCell<T> {}
|
2258 | 2261 | #[unstable(feature = "dispatch_from_dyn", issue = "none")]
|
2259 | 2262 | impl<T: DispatchFromDyn<U>, U> DispatchFromDyn<UnsafeCell<U>> for UnsafeCell<T> {}
|
2260 | 2263 |
|
| 2264 | +#[unstable(feature = "pointer_like_trait", issue = "none")] |
| 2265 | +impl<T: PointerLike> PointerLike for UnsafeCell<T> {} |
| 2266 | + |
2261 | 2267 | /// [`UnsafeCell`], but [`Sync`].
|
2262 | 2268 | ///
|
2263 | 2269 | /// This is just an `UnsafeCell`, except it implements `Sync`
|
@@ -2364,6 +2370,9 @@ impl<T: CoerceUnsized<U>, U> CoerceUnsized<SyncUnsafeCell<U>> for SyncUnsafeCell
|
2364 | 2370 | //#[unstable(feature = "sync_unsafe_cell", issue = "95439")]
|
2365 | 2371 | impl<T: DispatchFromDyn<U>, U> DispatchFromDyn<SyncUnsafeCell<U>> for SyncUnsafeCell<T> {}
|
2366 | 2372 |
|
| 2373 | +#[unstable(feature = "pointer_like_trait", issue = "none")] |
| 2374 | +impl<T: PointerLike> PointerLike for SyncUnsafeCell<T> {} |
| 2375 | + |
2367 | 2376 | #[allow(unused)]
|
2368 | 2377 | fn assert_coerce_unsized(
|
2369 | 2378 | a: UnsafeCell<&i32>,
|
|
0 commit comments