EG
Size: a a a
EG
EG
bool
лежит 2, она ничего про тип bool
не знаетEG
EG
ΑZ
unsafe fn split_at_mut_unchecked(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
let len = self.len();
let ptr = self.as_mut_ptr();
// SAFETY: Caller has to check that 0 <= mid <= self.len().
//
// [ptr; mid] and [mid; len] are not overlapping, so returning a mutable reference
// is fine.
unsafe { (from_raw_parts_mut(ptr, mid), from_raw_parts_mut(ptr.add(mid), len - mid)) }
}
fn split_at_mut_unchecked2(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
let len = self.len();
let ptr = self.as_mut_ptr();
// SAFETY: Caller has to check that 0 <= mid <= self.len().
//
// [ptr; mid] and [mid; len] are not overlapping, so returning a mutable reference
// is fine.
unsafe { (from_raw_parts_mut(ptr, mid), from_raw_parts_mut(ptr.add(mid), len - mid)) }
}
D
ΑZ
ΑZ
EG
ΑZ
EG
EG
p
p
p
p
EG
fn foo() {
let do_unsafe_thing = || unsafe { do_thing(); };
check_thing_is_safe();
do_unsafe_thing();
}
ΑZ
p
p