@@ -1898,23 +1898,6 @@ pub type NativeEndian = LittleEndian;
1898
1898
#[ cfg( target_endian = "big" ) ]
1899
1899
pub type NativeEndian = BigEndian ;
1900
1900
1901
- /// Copies $size bytes from a number $n to a &mut [u8] $dst. $ty represents the
1902
- /// numeric type of $n and $which must be either to_be or to_le, depending on
1903
- /// which endianness one wants to use when writing to $dst.
1904
- ///
1905
- /// This macro is only safe to call when $ty is a numeric type and $size ==
1906
- /// size_of::<$ty>() and where $dst is a &mut [u8].
1907
- macro_rules! unsafe_write_num_bytes {
1908
- ( $ty: ty, $size: expr, $n: expr, $dst: expr, $which: ident) => { {
1909
- assert!( $size <= $dst. len( ) ) ;
1910
- unsafe {
1911
- // N.B. https://github.com/rust-lang/rust/issues/22776
1912
- let bytes = * ( & $n. $which( ) as * const _ as * const [ u8 ; $size] ) ;
1913
- copy_nonoverlapping( ( & bytes) . as_ptr( ) , $dst. as_mut_ptr( ) , $size) ;
1914
- }
1915
- } } ;
1916
- }
1917
-
1918
1901
/// Copies a &[u8] $src into a &mut [$ty] $dst for the endianness given by
1919
1902
/// $from_bytes (must be either from_be_bytes or from_le_bytes).
1920
1903
///
@@ -2002,22 +1985,22 @@ impl ByteOrder for BigEndian {
2002
1985
2003
1986
#[ inline]
2004
1987
fn write_u16 ( buf : & mut [ u8 ] , n : u16 ) {
2005
- unsafe_write_num_bytes ! ( u16 , 2 , n , buf , to_be ) ;
1988
+ buf [ .. 2 ] . copy_from_slice ( & n . to_be_bytes ( ) ) ;
2006
1989
}
2007
1990
2008
1991
#[ inline]
2009
1992
fn write_u32 ( buf : & mut [ u8 ] , n : u32 ) {
2010
- unsafe_write_num_bytes ! ( u32 , 4 , n , buf , to_be ) ;
1993
+ buf [ .. 4 ] . copy_from_slice ( & n . to_be_bytes ( ) ) ;
2011
1994
}
2012
1995
2013
1996
#[ inline]
2014
1997
fn write_u64 ( buf : & mut [ u8 ] , n : u64 ) {
2015
- unsafe_write_num_bytes ! ( u64 , 8 , n , buf , to_be ) ;
1998
+ buf [ .. 8 ] . copy_from_slice ( & n . to_be_bytes ( ) ) ;
2016
1999
}
2017
2000
2018
2001
#[ inline]
2019
2002
fn write_u128 ( buf : & mut [ u8 ] , n : u128 ) {
2020
- unsafe_write_num_bytes ! ( u128 , 16 , n , buf , to_be ) ;
2003
+ buf [ .. 16 ] . copy_from_slice ( & n . to_be_bytes ( ) ) ;
2021
2004
}
2022
2005
2023
2006
#[ inline]
@@ -2194,22 +2177,22 @@ impl ByteOrder for LittleEndian {
2194
2177
2195
2178
#[ inline]
2196
2179
fn write_u16 ( buf : & mut [ u8 ] , n : u16 ) {
2197
- unsafe_write_num_bytes ! ( u16 , 2 , n , buf , to_le ) ;
2180
+ buf [ .. 2 ] . copy_from_slice ( & n . to_le_bytes ( ) ) ;
2198
2181
}
2199
2182
2200
2183
#[ inline]
2201
2184
fn write_u32 ( buf : & mut [ u8 ] , n : u32 ) {
2202
- unsafe_write_num_bytes ! ( u32 , 4 , n , buf , to_le ) ;
2185
+ buf [ .. 4 ] . copy_from_slice ( & n . to_le_bytes ( ) ) ;
2203
2186
}
2204
2187
2205
2188
#[ inline]
2206
2189
fn write_u64 ( buf : & mut [ u8 ] , n : u64 ) {
2207
- unsafe_write_num_bytes ! ( u64 , 8 , n , buf , to_le ) ;
2190
+ buf [ .. 8 ] . copy_from_slice ( & n . to_le_bytes ( ) ) ;
2208
2191
}
2209
2192
2210
2193
#[ inline]
2211
2194
fn write_u128 ( buf : & mut [ u8 ] , n : u128 ) {
2212
- unsafe_write_num_bytes ! ( u128 , 16 , n , buf , to_le ) ;
2195
+ buf [ .. 16 ] . copy_from_slice ( & n . to_le_bytes ( ) ) ;
2213
2196
}
2214
2197
2215
2198
#[ inline]
0 commit comments