October 2019
Intermediate to advanced
444 pages
10h 37m
English
In just a few steps, we are unsafe:
#![allow(dead_code)]use std::slice;fn split_into_equal_parts<T>(slice: &mut [T], parts: usize) -> Vec<&mut [T]> { let len = slice.len(); assert!(parts <= len); let step = len / parts; unsafe { let ptr = slice.as_mut_ptr(); (0..step + 1) .map(|i| { let offset = (i * step) as isize; let a = ptr.offset(offset); slice::from_raw_parts_mut(a, step) }) .collect() }}
#[cfg(test)]mod tests { use super::*; #[test] fn test_split_into_equal_parts() ...Read now
Unlock full access