|
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