#![warn(clippy::cast_slice_from_raw_parts)] const fn require_raw_slice_ptr(_: *const [T]) {} fn main() { let mut vec = vec![0u8; 1]; let ptr: *const u8 = vec.as_ptr(); let mptr = vec.as_mut_ptr(); let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts(ptr, 1) }; //~^ cast_slice_from_raw_parts let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts_mut(mptr, 1) }; //~^ cast_slice_from_raw_parts let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1); //~^ cast_slice_from_raw_parts { use core::slice; let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1); //~^ cast_slice_from_raw_parts use slice as one; let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1); //~^ cast_slice_from_raw_parts } { use std::slice; let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1); //~^ cast_slice_from_raw_parts use slice as one; let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1); //~^ cast_slice_from_raw_parts } // implicit cast { let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts(ptr, 1) }; //~^ cast_slice_from_raw_parts let _: *mut [u8] = unsafe { std::ptr::slice_from_raw_parts_mut(mptr, 1) }; //~^ cast_slice_from_raw_parts require_raw_slice_ptr(unsafe { std::ptr::slice_from_raw_parts(ptr, 1) }); //~^ cast_slice_from_raw_parts } // implicit cast in const context const { const PTR: *const u8 = std::ptr::null(); const MPTR: *mut u8 = std::ptr::null_mut(); let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts(PTR, 1) }; //~^ cast_slice_from_raw_parts let _: *mut [u8] = unsafe { std::ptr::slice_from_raw_parts_mut(MPTR, 1) }; //~^ cast_slice_from_raw_parts require_raw_slice_ptr(unsafe { std::ptr::slice_from_raw_parts(PTR, 1) }); //~^ cast_slice_from_raw_parts }; }