REFAC: use extend_from_slice in Write implementation for ArrayVec

This commit is contained in:
Thomas de Zeeuw
2018-07-17 15:14:50 +02:00
parent 2120e4bb75
commit c4b6e86211
+3 -10
View File
@@ -1079,16 +1079,9 @@ impl<A: Array> Ord for ArrayVec<A> where A::Item: Ord {
/// Requires `features="std"`.
impl<A: Array<Item=u8>> io::Write for ArrayVec<A> {
fn write(&mut self, data: &[u8]) -> io::Result<usize> {
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(()) }
}