forked from M-Labs/nalgebra
Apply suggestions from code review
Co-authored-by: tpdickso <terence.dickson.prf@gmail.com>
This commit is contained in:
parent
d1b5df480f
commit
095c561b60
@ -213,14 +213,13 @@ pub unsafe trait RawStorageMut<T, R: Dim, C: Dim = U1>: RawStorage<T, R, C> {
|
|||||||
/// result in stable references. If any of the data pointed to by these trait methods
|
/// result in stable references. If any of the data pointed to by these trait methods
|
||||||
/// moves as a consequence of invoking either of these methods then this default
|
/// moves as a consequence of invoking either of these methods then this default
|
||||||
/// trait implementation may be invalid or unsound and should be overridden.
|
/// trait implementation may be invalid or unsound and should be overridden.
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize) {
|
unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize) {
|
||||||
// we can't just use the pointers returned from `get_address_unchecked_linear_mut` because calling a
|
// we can't just use the pointers returned from `get_address_unchecked_linear_mut` because calling a
|
||||||
// method taking self mutably invalidates any existing (mutable) pointers. since `get_address_unchecked_linear_mut` can
|
// method taking self mutably invalidates any existing (mutable) pointers. since `get_address_unchecked_linear_mut` can
|
||||||
// also be overriden by a custom implementation, we can't just use `wrapping_add` assuming that's what the method does.
|
// also be overriden by a custom implementation, we can't just use `wrapping_add` assuming that's what the method does.
|
||||||
// instead, we use `offset_from` to compute the re-calculate the pointers from the base pointer.
|
// instead, we use `offset_from` to compute the re-calculate the pointers from the base pointer.
|
||||||
// this is safe as long as this trait is implemented safely
|
// this is sound as long as this trait matches the Validity preconditions
|
||||||
// (and it's the caller's responsibility to ensure the indices are in-bounds).
|
// (and it's the caller's responsibility to ensure the indices are in-bounds).
|
||||||
let base = self.ptr_mut();
|
let base = self.ptr_mut();
|
||||||
let offset1 = self.get_address_unchecked_linear_mut(i1).offset_from(base);
|
let offset1 = self.get_address_unchecked_linear_mut(i1).offset_from(base);
|
||||||
|
Loading…
Reference in New Issue
Block a user