From 2bf5256edd800c2a3a304ee636a22a2be4968747 Mon Sep 17 00:00:00 2001 From: Youngsuk Kim Date: Sun, 9 Feb 2020 15:44:21 -0500 Subject: [PATCH] Update implementation code of `split_at_mut` --- src/borrow-splitting.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/borrow-splitting.md b/src/borrow-splitting.md index 487e1f6..51187ea 100644 --- a/src/borrow-splitting.md +++ b/src/borrow-splitting.md @@ -66,13 +66,15 @@ the implementation requires some unsafety: # impl FakeSlice { # fn len(&self) -> usize { unimplemented!() } # fn as_mut_ptr(&mut self) -> *mut T { unimplemented!() } -fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) { +pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) { let len = self.len(); let ptr = self.as_mut_ptr(); - assert!(mid <= len); + unsafe { + assert!(mid <= len); + (from_raw_parts_mut(ptr, mid), - from_raw_parts_mut(ptr.offset(mid as isize), len - mid)) + from_raw_parts_mut(ptr.add(mid), len - mid)) } } # }