Created
June 13, 2018 14:05
-
-
Save kogai/12814b3d310640dade9e7b49c4ccb3dd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #[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