about summary refs log tree commit diff
path: root/library/std/src
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2022-01-19 15:57:36 -0800
committerJosh Stone <jistone@redhat.com>2022-01-19 15:57:40 -0800
commita04d553e882196146aaa632cf00877c4af37d447 (patch)
treeb56f8a91e84cd4e45577cae3b97a6bf0311bd715 /library/std/src
parent4038ca0965151b42afa4692b23b2eeaa4236a29f (diff)
downloadrust-a04d553e882196146aaa632cf00877c4af37d447.tar.gz
rust-a04d553e882196146aaa632cf00877c4af37d447.zip
impl Write for Cursor<[u8; N]>
Diffstat (limited to 'library/std/src')
-rw-r--r--library/std/src/io/cursor.rs23
-rw-r--r--library/std/src/io/cursor/tests.rs12
2 files changed, 35 insertions, 0 deletions
diff --git a/library/std/src/io/cursor.rs b/library/std/src/io/cursor.rs
index 416cc906e65..7670a859292 100644
--- a/library/std/src/io/cursor.rs
+++ b/library/std/src/io/cursor.rs
@@ -525,3 +525,26 @@ impl Write for Cursor<Box<[u8]>> {
         Ok(())
     }
 }
+
+#[stable(feature = "cursor_array", since = "1.60.0")]
+impl<const N: usize> Write for Cursor<[u8; N]> {
+    #[inline]
+    fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+        slice_write(&mut self.pos, &mut self.inner, buf)
+    }
+
+    #[inline]
+    fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
+        slice_write_vectored(&mut self.pos, &mut self.inner, bufs)
+    }
+
+    #[inline]
+    fn is_write_vectored(&self) -> bool {
+        true
+    }
+
+    #[inline]
+    fn flush(&mut self) -> io::Result<()> {
+        Ok(())
+    }
+}
diff --git a/library/std/src/io/cursor/tests.rs b/library/std/src/io/cursor/tests.rs
index 2d0836d9a85..f1ee177b7f3 100644
--- a/library/std/src/io/cursor/tests.rs
+++ b/library/std/src/io/cursor/tests.rs
@@ -105,6 +105,18 @@ fn test_box_slice_writer_vectored() {
 }
 
 #[test]
+fn test_array_writer() {
+    let mut writer = Cursor::new([0u8; 9]);
+    test_slice_writer(&mut writer);
+}
+
+#[test]
+fn test_array_writer_vectored() {
+    let mut writer = Cursor::new([0u8; 9]);
+    test_slice_writer_vectored(&mut writer);
+}
+
+#[test]
 fn test_buf_writer() {
     let mut buf = [0 as u8; 9];
     let mut writer = Cursor::new(&mut buf[..]);