Skip to content

Commit 637dae4

Browse files
committed
Update code to compile with latest rustc.
Swap order of input and output parameters of ptr::copy_nonoverlapping (rust-lang/rust#23866), remove usage of std::num::Int (rust-lang/rust#23549), change (rust-lang/rust#23860).
1 parent 9556666 commit 637dae4

File tree

2 files changed

+20
-27
lines changed

2 files changed

+20
-27
lines changed

src/lib.rs

+17-24
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ pub mod intrinsics {
4545

4646
/// Swap bytes for `u8` slices on all targets.
4747
pub mod u8 {
48-
use std::num::Int;
4948
use std::ptr;
5049
use std::mem;
5150
use std::error;
@@ -56,7 +55,7 @@ pub mod u8 {
5655
#[inline]
5756
pub unsafe fn align_of_ptr(src: *const u8) -> usize {
5857
let off: usize = mem::transmute(src);
59-
2.pow(off.trailing_zeros() as u32)
58+
2usize.pow(off.trailing_zeros() as u32)
6059
}
6160

6261
/// TODO
@@ -69,9 +68,9 @@ pub mod u8 {
6968
#[inline]
7069
pub fn reverse_slice(dst: &mut [u8], src: &[u8]) {
7170
unsafe {
72-
ptr::copy_nonoverlapping(dst.as_mut_ptr(),
73-
src.as_ptr(),
74-
src.len());
71+
ptr::copy_nonoverlapping(src.as_ptr(),
72+
dst.as_mut_ptr(),
73+
src.len());
7574
}
7675
dst.reverse();
7776
}
@@ -124,7 +123,7 @@ pub mod u8 {
124123
}
125124

126125
/// Errors that can occur when decoding a hex encoded string
127-
#[derive(Copy)]
126+
#[derive(Copy,Clone)]
128127
pub enum FromHexError {
129128
/// The input contained a character not part of the hex format
130129
InvalidHexCharacter(char, usize),
@@ -354,7 +353,6 @@ pub mod u56 {
354353
/// Swap bytes for `u32` objects on all targets.
355354
pub mod u32 {
356355
use std::cmp;
357-
use std::num::Int;
358356
pub const BYTES: usize = 4;
359357

360358

@@ -428,7 +426,6 @@ pub mod u32 {
428426
/// Swap bytes for `u64` objects on all targets.
429427
pub mod u64 {
430428
use std::cmp;
431-
use std::num::Int;
432429
pub const BYTES: usize = 7;
433430

434431
/// Swaps `len*8` bytes for `u64` objects inplace in `buf`.
@@ -505,7 +502,6 @@ pub mod u64 {
505502
}
506503

507504
pub mod beusize {
508-
use std::num::Int;
509505
use std::ptr;
510506
use std::mem;
511507

@@ -517,7 +513,7 @@ pub mod beusize {
517513
let ptr_out = dst.as_mut_ptr();
518514
unsafe {
519515
ptr::copy_nonoverlapping(
520-
ptr_out.offset((8 - nbytes) as isize), src.as_ptr(), nbytes);
516+
src.as_ptr(), ptr_out.offset((8 - nbytes) as isize), nbytes);
521517
(*(ptr_out as *const u64)).to_be()
522518
}
523519
}
@@ -530,13 +526,12 @@ pub mod beusize {
530526
// n.b. https://github.com/rust-lang/rust/issues/22776
531527
let bytes: [u8; 8] = mem::transmute::<_, [u8; 8]>(src.to_be());
532528
ptr::copy_nonoverlapping(
533-
dst.as_mut_ptr(), (&bytes[8 - nbytes..]).as_ptr(), nbytes);
529+
(&bytes[8 - nbytes..]).as_ptr(), dst.as_mut_ptr(), nbytes);
534530
}
535531
}
536532
}
537533

538534
pub mod leusize {
539-
use std::num::Int;
540535
use std::ptr;
541536
use std::mem;
542537

@@ -548,7 +543,7 @@ pub mod leusize {
548543
let ptr_out = dst.as_mut_ptr();
549544
unsafe {
550545
ptr::copy_nonoverlapping(
551-
ptr_out, src.as_ptr(), nbytes);
546+
src.as_ptr(), ptr_out, nbytes);
552547
(*(ptr_out as *const u64)).to_le()
553548
}
554549
}
@@ -561,15 +556,14 @@ pub mod leusize {
561556
// n.b. https://github.com/rust-lang/rust/issues/22776
562557
let bytes: [u8; 8] = mem::transmute::<_, [u8; 8]>(src.to_le());
563558
ptr::copy_nonoverlapping(
564-
dst.as_mut_ptr(), (&bytes[..nbytes]).as_ptr(), nbytes);
559+
(&bytes[..nbytes]).as_ptr(), dst.as_mut_ptr(), nbytes);
565560
}
566561
}
567562
}
568563

569564

570565
macro_rules! mod_odd_impls {
571566
($I:ident, $T:ident, $S:ident, $Bytes:expr, $DFunc:ident, $EMeth:ident, $E:expr, $NotE:expr) => {
572-
use std::num::Int;
573567
use std::ptr;
574568
use std::mem;
575569

@@ -578,7 +572,7 @@ macro_rules! mod_odd_impls {
578572
if cfg!(target_endian = $NotE) {
579573
super::$T::swap_memory(dst, src, len);
580574
} else {
581-
ptr::copy_nonoverlapping(dst, src, len*$Bytes);
575+
ptr::copy_nonoverlapping(src, dst, len*$Bytes);
582576
}
583577
}
584578

@@ -588,8 +582,8 @@ macro_rules! mod_odd_impls {
588582
assert_eq!(buf.len(), $Bytes);
589583
unsafe {
590584
let mut tmp: $S = mem::uninitialized();
591-
ptr::copy_nonoverlapping(&mut tmp as *mut _ as *mut u8, buf.as_ptr(), $Bytes);
592-
Int::$DFunc(tmp)
585+
ptr::copy_nonoverlapping(buf.as_ptr(), &mut tmp as *mut _ as *mut u8, $Bytes);
586+
$S::$DFunc(tmp)
593587
}
594588
}
595589

@@ -608,7 +602,7 @@ macro_rules! mod_odd_impls {
608602
assert_eq!(dst.len(), $Bytes);
609603
unsafe {
610604
let tmp: $S = src.$EMeth();
611-
ptr::copy_nonoverlapping(dst.as_mut_ptr(), &tmp as *const _ as *const u8, $Bytes);
605+
ptr::copy_nonoverlapping(&tmp as *const _ as *const u8, dst.as_mut_ptr(), $Bytes);
612606
}
613607
}
614608

@@ -626,7 +620,6 @@ macro_rules! mod_odd_impls {
626620

627621
macro_rules! mod_std_impls {
628622
($I:ident, $T:ident, $Bytes:expr, $DFunc:ident, $EMeth:ident, $E:expr, $NotE:expr) => {
629-
use std::num::Int;
630623
use std::ptr;
631624
use std::mem;
632625

@@ -635,7 +628,7 @@ macro_rules! mod_std_impls {
635628
if cfg!(target_endian = $NotE) {
636629
super::$T::swap_memory(dst, src, len);
637630
} else {
638-
ptr::copy_nonoverlapping(dst, src, len*$Bytes);
631+
ptr::copy_nonoverlapping(src, dst, len*$Bytes);
639632
}
640633
}
641634

@@ -645,8 +638,8 @@ macro_rules! mod_std_impls {
645638
assert_eq!(buf.len(), $Bytes);
646639
unsafe {
647640
let mut tmp: $T = mem::uninitialized();
648-
ptr::copy_nonoverlapping(&mut tmp as *mut _ as *mut u8, buf.as_ptr(), $Bytes);
649-
Int::$DFunc(tmp)
641+
ptr::copy_nonoverlapping(buf.as_ptr(), &mut tmp as *mut _ as *mut u8, $Bytes);
642+
$T::$DFunc(tmp)
650643
}
651644
}
652645

@@ -665,7 +658,7 @@ macro_rules! mod_std_impls {
665658
assert_eq!(dst.len(), $Bytes);
666659
unsafe {
667660
let tmp: $T = src.$EMeth();
668-
ptr::copy_nonoverlapping(dst.as_mut_ptr(), &tmp as *const _ as *const u8, $Bytes);
661+
ptr::copy_nonoverlapping(&tmp as *const _ as *const u8, dst.as_mut_ptr(), $Bytes);
669662
}
670663
}
671664

src/tests.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ fn test_u64_swap_memory_hi() {
156156
fn test_u64_swap_memory_inplace_hi() {
157157
let mut dst = [0u8; 8];
158158
let src: &[u8] = b"hi world";
159-
::std::slice::bytes::copy_memory(&mut dst, src);
159+
::std::slice::bytes::copy_memory(src, &mut dst);
160160
unsafe {
161161
super::u64::swap_memory_inplace(
162162
(&mut dst[..]).as_mut_ptr(),
@@ -185,7 +185,7 @@ fn test_u64_swap_memory_pangram() {
185185
fn test_u64_swap_memory_inplace_pangram() {
186186
let mut dst = [0u8; 32];
187187
let src: &[u8] = b"Five boxing wizards jump quickly";
188-
::std::slice::bytes::copy_memory(&mut dst, src);
188+
::std::slice::bytes::copy_memory(src, &mut dst);
189189
unsafe {
190190
super::u64::swap_memory_inplace(
191191
(&mut dst[..]).as_mut_ptr(),
@@ -215,7 +215,7 @@ fn test_u64_swap_memory_lorem_ipsum() {
215215
fn test_u64_swap_memory_inplace_lorem_ipsum() {
216216
let mut dst = [0u8; 160];
217217
let src: &[u8] = &LOREM_IPSUM[..160];
218-
::std::slice::bytes::copy_memory(&mut dst, src);
218+
::std::slice::bytes::copy_memory(src, &mut dst);
219219
unsafe {
220220
super::u64::swap_memory_inplace(
221221
(&mut dst[..]).as_mut_ptr(),

0 commit comments

Comments
 (0)