peroxide/util/
low_level.rs

1pub unsafe fn copy_vec_ptr<T>(dst: &mut Vec<*mut T>, src: &Vec<T>)
2where
3    T: Copy,
4{
5    assert_eq!(dst.len(), src.len(), "Should use same length vectors");
6    for (&mut p, &s) in dst.iter_mut().zip(src) {
7        *p = s;
8    }
9}
10
11pub unsafe fn swap_vec_ptr<T>(lhs: &mut Vec<*mut T>, rhs: &mut Vec<*mut T>)
12where
13    T: Copy,
14{
15    assert_eq!(lhs.len(), rhs.len(), "Should use same length vectors");
16    for (&mut l, &mut r) in lhs.iter_mut().zip(rhs.iter_mut()) {
17        std::ptr::swap(l, r);
18    }
19}
20
21pub unsafe fn ptr_to_vec<T>(pv: &Vec<*const T>) -> Vec<T>
22where
23    T: Copy,
24{
25    pv.iter().map(|&x| *x).collect()
26}