Skip to content

Commit fa4e22f

Browse files
committed
REFAC: use extend_from_slice in Write implementation for ArrayVec
1 parent 876c465 commit fa4e22f

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

src/lib.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,16 +1046,9 @@ impl<A: Array> Ord for ArrayVec<A> where A::Item: Ord {
10461046
/// Requires `features="std"`.
10471047
impl<A: Array<Item=u8>> io::Write for ArrayVec<A> {
10481048
fn write(&mut self, data: &[u8]) -> io::Result<usize> {
1049-
unsafe {
1050-
let len = self.len();
1051-
let mut tail = slice::from_raw_parts_mut(self.get_unchecked_mut(len),
1052-
A::capacity() - len);
1053-
let result = tail.write(data);
1054-
if let Ok(written) = result {
1055-
self.set_len(len + written);
1056-
}
1057-
result
1058-
}
1049+
let len = cmp::min(self.capacity_left(), data.len());
1050+
self.extend_from_slice(&data[..len]);
1051+
Ok(len)
10591052
}
10601053
fn flush(&mut self) -> io::Result<()> { Ok(()) }
10611054
}

0 commit comments

Comments
 (0)