From c4b6e862112c7786b1a9fea4c31a7c411e581bd1 Mon Sep 17 00:00:00 2001 From: Thomas de Zeeuw Date: Tue, 17 Jul 2018 15:14:50 +0200 Subject: [PATCH] REFAC: use extend_from_slice in Write implementation for ArrayVec --- src/lib.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 46ba3a8..9df8126 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1079,16 +1079,9 @@ impl Ord for ArrayVec where A::Item: Ord { /// Requires `features="std"`. impl> io::Write for ArrayVec { fn write(&mut self, data: &[u8]) -> io::Result { - unsafe { - let len = self.len(); - let mut tail = slice::from_raw_parts_mut(self.get_unchecked_mut(len), - A::capacity() - len); - let result = tail.write(data); - if let Ok(written) = result { - self.set_len(len + written); - } - result - } + let len = cmp::min(self.capacity_left(), data.len()); + self.extend_from_slice(&data[..len]); + Ok(len) } fn flush(&mut self) -> io::Result<()> { Ok(()) } }