Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Sample {
- pub v: Vec<u8>, pub c: usize,
- }
- fn main() {
- let mut v=Sample{v: vec![0; 16],c: 2};
- pixel(&mut v, 1)[0]=-1i16;
- pixel(&mut v, 3)[0]=1i16;
- pixel(&mut v, 3)[1]=-1i16;
- assert_eq!(v.v,vec![0,0,0,0,255,255,0,0,0,0,0,0,1,0,255,255])
- }
- fn pixel<'a>(buf: &'a mut Sample, pos: usize) -> &'a mut [i16] {
- let win=2*buf.c;
- let pos=pos*win;
- assert!(pos>=0 && pos+win<=buf.v.len());
- let sl: &mut [u8] = &mut buf.v[pos..pos+win];
- let slp=sl.as_mut_ptr() as *mut i16;
- unsafe {std::slice::from_raw_parts_mut(slp,buf.c)}
- }
Add Comment
Please, Sign In to add comment