Make std::mem::needs_drop accept ?Sized

This commit is contained in:
Nikolai Vazquez 2022-06-03 03:28:19 -04:00
parent a513b2abae
commit be34cb35c7
2 changed files with 8 additions and 1 deletions

View File

@ -514,7 +514,7 @@ pub mod intrinsics {
pub fn copy<T>(src: *const T, dst: *mut T, count: usize); pub fn copy<T>(src: *const T, dst: *mut T, count: usize);
pub fn transmute<T, U>(e: T) -> U; pub fn transmute<T, U>(e: T) -> U;
pub fn ctlz_nonzero<T>(x: T) -> T; pub fn ctlz_nonzero<T>(x: T) -> T;
pub fn needs_drop<T>() -> bool; pub fn needs_drop<T: ?::Sized>() -> bool;
pub fn bitreverse<T>(x: T) -> T; pub fn bitreverse<T>(x: T) -> T;
pub fn bswap<T>(x: T) -> T; pub fn bswap<T>(x: T) -> T;
pub fn write_bytes<T>(dst: *mut T, val: u8, count: usize); pub fn write_bytes<T>(dst: *mut T, val: u8, count: usize);

View File

@ -47,6 +47,11 @@ struct NoisyDrop {
inner: NoisyDropInner, inner: NoisyDropInner,
} }
struct NoisyDropUnsized {
text: str,
inner: NoisyDropInner,
}
struct NoisyDropInner; struct NoisyDropInner;
impl Drop for NoisyDrop { impl Drop for NoisyDrop {
@ -184,7 +189,9 @@ fn main() {
assert_eq!(intrinsics::min_align_of_val(&a) as u8, intrinsics::min_align_of::<&str>() as u8); assert_eq!(intrinsics::min_align_of_val(&a) as u8, intrinsics::min_align_of::<&str>() as u8);
assert!(!intrinsics::needs_drop::<u8>()); assert!(!intrinsics::needs_drop::<u8>());
assert!(!intrinsics::needs_drop::<[u8]>());
assert!(intrinsics::needs_drop::<NoisyDrop>()); assert!(intrinsics::needs_drop::<NoisyDrop>());
assert!(intrinsics::needs_drop::<NoisyDropUnsized>());
Unique { Unique {
pointer: 0 as *const &str, pointer: 0 as *const &str,