Merge #212 212: 'copy_from_slice' instead of 'clone_from_slice' when copying 'u8' slices r=JOE1994 a=JOE1994 Hello :crab: , this PR changes invocations of `clone_from_slice()` to `copy_from_slice()`. `copy_from_slice()` performs memcpy, while `clone_from_slice()` performs an element-wise copy. (`copy_from_slice()` should generally run faster than `clone_from_slice()`) The affected call sites all copy `u8` slices, and since `u8` implements `Copy`, it is safe to use `copy_from_slice()`. Thank you for reviewing this PR :superhero_woman: :superhero_man: :superhero: Co-authored-by: JOE1994 <joseph942010@gmail.com>
diff --git a/src/ble_composer.rs b/src/ble_composer.rs index 0bb96d8..589dfc3 100644 --- a/src/ble_composer.rs +++ b/src/ble_composer.rs
@@ -21,7 +21,7 @@ self.bytes[self.occupied] = (content.len() + 1) as u8; self.bytes[self.occupied + 1] = kind; let write = &mut self.bytes[self.occupied + 2..(self.occupied + content.len() + 2)]; - write.clone_from_slice(content); + write.copy_from_slice(content); self.occupied += 2 + content.len(); Ok(()) } @@ -44,7 +44,7 @@ self.bytes[self.occupied + 3] = uuid[1]; let write = &mut self.bytes[self.occupied + 4..(self.occupied + content.len() + 4)]; - write.clone_from_slice(content); + write.copy_from_slice(content); self.occupied += 4 + content.len(); Ok(()) }
diff --git a/src/ble_parser.rs b/src/ble_parser.rs index 1d12b19..216d974 100644 --- a/src/ble_parser.rs +++ b/src/ble_parser.rs
@@ -53,7 +53,7 @@ 0x02, 0x02, 0x01, 0x02, 0x01, 0x03, 0x03, 0x16, 0x01, 0x02, 0x04, 0xFF, 0x01, 0x02, 0x03, ]; - slice.clone_from_slice(data); + slice.copy_from_slice(data); } assert_eq!(find(&buf, 0x02), Some(&[0x01][0..1])); assert_eq!(find(&buf, 0x01), Some(&[0x03][0..1])); @@ -67,7 +67,7 @@ { let slice = &mut buf[8..18]; let data = &[0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0, 0x16, 0x01, 0x02]; - slice.clone_from_slice(data); + slice.copy_from_slice(data); } } @@ -77,7 +77,7 @@ { let slice = &mut buf[8..10]; let data = &[0x04, 0x02]; - slice.clone_from_slice(data); + slice.copy_from_slice(data); } assert_eq!(find(&buf, 0xF2), None); }