Skip to content

Commit 79a600d

Browse files
author
Lukas Markeffsky
committed
test it in core
1 parent 05be0e0 commit 79a600d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

library/core/src/ptr/const_ptr.rs

+14
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,24 @@ impl<T: ?Sized> *const T {
5757
#[rustc_const_stable(feature = "const_ptr_cast", since = "1.38.0")]
5858
#[rustc_diagnostic_item = "const_ptr_cast"]
5959
#[inline(always)]
60+
#[cfg(bootstrap)]
6061
pub const fn cast<U>(self) -> *const U {
6162
self as _
6263
}
6364

65+
/// Casts to a pointer of another type.
66+
#[stable(feature = "ptr_cast", since = "1.38.0")]
67+
#[rustc_const_stable(feature = "const_ptr_cast", since = "1.38.0")]
68+
#[rustc_diagnostic_item = "const_ptr_cast"]
69+
#[inline(always)]
70+
#[cfg(not(bootstrap))]
71+
pub const fn cast<U: ?Sized>(self) -> *const U
72+
where
73+
T: PointerCast<U>,
74+
{
75+
self as _
76+
}
77+
6478
/// Use the pointer value in a new pointer of another type.
6579
///
6680
/// In case `meta` is a (fat) pointer to an unsized type, this operation

library/core/src/ptr/mut_ptr.rs

+14
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,24 @@ impl<T: ?Sized> *mut T {
5757
#[rustc_const_stable(feature = "const_ptr_cast", since = "1.38.0")]
5858
#[rustc_diagnostic_item = "ptr_cast"]
5959
#[inline(always)]
60+
#[cfg(bootstrap)]
6061
pub const fn cast<U>(self) -> *mut U {
6162
self as _
6263
}
6364

65+
/// Casts to a pointer of another type.
66+
#[stable(feature = "ptr_cast", since = "1.38.0")]
67+
#[rustc_const_stable(feature = "const_ptr_cast", since = "1.38.0")]
68+
#[rustc_diagnostic_item = "ptr_cast"]
69+
#[inline(always)]
70+
#[cfg(not(bootstrap))]
71+
pub const fn cast<U: ?Sized>(self) -> *mut U
72+
where
73+
T: PointerCast<U>,
74+
{
75+
self as _
76+
}
77+
6478
/// Use the pointer value in a new pointer of another type.
6579
///
6680
/// In case `meta` is a (fat) pointer to an unsized type, this operation

0 commit comments

Comments
 (0)