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(()) } }