Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Buffer {
- buffer: Vec<[u8; 4]>,
- }
- impl Buffer {
- pub fn receive_int32(&mut self, mut data: Vec<[u8; 4]>) -> Vec<[u8; 4]> {
- // Lock the mutex
- let current_data = &mut self.buffer;
- // If the sizes are not equal then we need to adjust the size of this buffer
- if data.len() != current_data.len() {
- data.reserve_exact(current_data.len() - data.len());
- data.resize(current_data.len(), [0u8; 4]);
- }
- // Copy the current data to the new buffer
- data.copy_from_slice(¤t_data);
- // Swap the buffers and return the current buffer
- std::mem::replace(current_data, data)
- }
- }
- pub fn main() {
- let buffer1: Vec<[u8; 4]> = Vec::new();
- let mut buffer2: Vec<[u8; 4]> = Vec::new();
- buffer2.push([0,1,2,3]);
- let mut buffer = Buffer {
- buffer: buffer2,
- };
- println!("Initial Receive Buffer {:?}", &buffer.buffer);
- println!("Empty Swap Buffer {:?}", &buffer1);
- let new_buff1 = buffer.receive_int32(buffer1);
- println!("After First Receive {:?}", &new_buff1);
- let new_buff2 = buffer.receive_int32(new_buff1);
- println!("After Second Receive {:?}", &new_buff2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement