@@ -3889,18 +3889,18 @@ unsafe impl<'a, T> TrustedRandomAccess for ExactChunksMut<'a, T> {
3889
3889
/// ```
3890
3890
/// use std::slice;
3891
3891
///
3892
- /// // manifest a slice out of thin air!
3893
- /// let ptr = 0x1234 as *const usize;
3894
- /// let amt = 10;
3895
- /// unsafe {
3896
- /// let slice = slice::from_raw_parts(ptr, amt);
3897
- /// }
3892
+ /// // manifest a slice for a single element
3893
+ /// let x = 42;
3894
+ /// let ptr = &x as *const _;
3895
+ /// let slice = unsafe { slice::from_raw_parts(ptr, 1) };
3896
+ /// assert_eq!(slice[0], 42);
3898
3897
/// ```
3899
3898
///
3900
3899
/// [`NonNull::dangling()`]: ../../std/ptr/struct.NonNull.html#method.dangling
3901
3900
#[ inline]
3902
3901
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
3903
3902
pub unsafe fn from_raw_parts < ' a , T > ( data : * const T , len : usize ) -> & ' a [ T ] {
3903
+ debug_assert ! ( data as usize % mem:: align_of:: <T >( ) == 0 , "attempt to create unaligned slice" ) ;
3904
3904
Repr { raw : FatPtr { data, len } } . rust
3905
3905
}
3906
3906
@@ -3914,6 +3914,7 @@ pub unsafe fn from_raw_parts<'a, T>(data: *const T, len: usize) -> &'a [T] {
3914
3914
#[ inline]
3915
3915
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
3916
3916
pub unsafe fn from_raw_parts_mut < ' a , T > ( data : * mut T , len : usize ) -> & ' a mut [ T ] {
3917
+ debug_assert ! ( data as usize % mem:: align_of:: <T >( ) == 0 , "attempt to create unaligned slice" ) ;
3917
3918
Repr { raw : FatPtr { data, len} } . rust_mut
3918
3919
}
3919
3920
0 commit comments