Skip to content

Instantly share code, notes, and snippets.

@kogai
Created June 13, 2018 14:05
Show Gist options
  • Select an option

  • Save kogai/12814b3d310640dade9e7b49c4ccb3dd to your computer and use it in GitHub Desktop.

Select an option

Save kogai/12814b3d310640dade9e7b49c4ccb3dd to your computer and use it in GitHub Desktop.
#[test]
fn test_ptr() {
use std::ptr;
// let mut x = vec![1, 2, 3];
// let y = vec![4, 5, 6, 7, 8];
let mut vec = vec![0; 4];
let src = vec![1, 2];
// unsafe {
// let vec_ptr = vec.as_mut_ptr();
let src_ptr = src.as_ptr();
// vec_ptr.copy_from(src_ptr, 2);
// // ptr::write_bytes(vec_ptr, b'a', 2);
// // ptr::write(vec_ptr, src_ptr);
// }
unsafe {
let offset = 2;
let to_move = vec.len() - offset;
let vec_ptr = vec.as_mut_ptr().offset(offset as isize);
// let src = v.as_mut_ptr().offset(offset as isize);
// if to_move > 0 {
let mut dst = vec_ptr.offset(src.len() as isize);
// dst.copy_from(src_ptr, offset);
ptr::write(dst, 3);
println!("{:?}", *dst);
// assert_eq!(dst, [0, 0, 1, 2]);
// ptr::write(dst, vec_ptr, to_move);
// }
// ptr::copy_nonoverlapping_memory(src, s.as_ptr(), s.len());
}
assert_eq!(vec, [0, 0, 1, 2]);
// assert_eq!(vec, [b'a', b'a', 0, 0]);
// unsafe {
// ptr::write(y, z);
// assert_eq!(ptr::read(y), 12);
// }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment