You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/lib.rs
+16-20
Original file line number
Diff line number
Diff line change
@@ -16,8 +16,7 @@ use access::{ReadOnly, ReadWrite, Readable, Writable, WriteOnly};
16
16
use core::{
17
17
fmt,
18
18
marker::PhantomData,
19
-
ops::Deref,
20
-
ops::{DerefMut,Index,IndexMut},
19
+
ops::{Deref,DerefMut,Index,IndexMut},
21
20
ptr,
22
21
slice::SliceIndex,
23
22
};
@@ -514,16 +513,17 @@ where
514
513
where
515
514
T:Copy,
516
515
{
516
+
let src = self.reference.deref();
517
517
assert_eq!(
518
-
self.reference.len(),
518
+
src.len(),
519
519
dst.len(),
520
520
"destination and source slices have different lengths"
521
521
);
522
522
unsafe{
523
523
intrinsics::volatile_copy_nonoverlapping_memory(
524
524
dst.as_mut_ptr(),
525
-
self.reference.as_ptr(),
526
-
self.reference.len(),
525
+
src.as_ptr(),
526
+
src.len(),
527
527
);
528
528
}
529
529
}
@@ -569,16 +569,17 @@ where
569
569
T:Copy,
570
570
R:DerefMut,
571
571
{
572
+
let dest = self.reference.deref_mut();
572
573
assert_eq!(
573
-
self.reference.len(),
574
+
dest.len(),
574
575
src.len(),
575
576
"destination and source slices have different lengths"
576
577
);
577
578
unsafe{
578
579
intrinsics::volatile_copy_nonoverlapping_memory(
579
-
self.reference.as_mut_ptr(),
580
+
dest.as_mut_ptr(),
580
581
src.as_ptr(),
581
-
self.reference.len(),
582
+
dest.len(),
582
583
);
583
584
}
584
585
}
@@ -621,22 +622,20 @@ where
621
622
T:Copy,
622
623
R:DerefMut,
623
624
{
625
+
let slice = self.reference.deref_mut();
624
626
// implementation taken from https://github.com/rust-lang/rust/blob/683d1bcd405727fcc9209f64845bd3b9104878b8/library/core/src/slice/mod.rs#L2726-L2738
625
627
letRange{
626
628
start: src_start,
627
629
end: src_end,
628
-
} = range(src, ..self.reference.len());
630
+
} = range(src, ..slice.len());
629
631
let count = src_end - src_start;
630
-
assert!(
631
-
dest <= self.reference.len() - count,
632
-
"dest is out of bounds"
633
-
);
632
+
assert!(dest <= slice.len() - count,"dest is out of bounds");
634
633
// SAFETY: the conditions for `volatile_copy_memory` have all been checked above,
0 commit comments