From 94e58437f89d6a4bfbac1ba10a07dcbebf64f5b7 Mon Sep 17 00:00:00 2001 From: Alice Ryhl Date: Mon, 13 Jan 2025 10:13:56 +0100 Subject: [PATCH] IoSlice is not Copy on MSRV 2 --- src/buf/take.rs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/buf/take.rs b/src/buf/take.rs index 92e8ea061..7c83a6a74 100644 --- a/src/buf/take.rs +++ b/src/buf/take.rs @@ -162,9 +162,29 @@ impl Buf for Take { return 0; } - let mut slices = [IoSlice::new(&[]); 16]; - - let cnt = self.inner.chunks_vectored(&mut slices[..dst.len().min(16)]); + const LEN: usize = 16; + let mut slices: [IoSlice<'a>; LEN] = [ + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + IoSlice::new(&[]), + ]; + + let cnt = self + .inner + .chunks_vectored(&mut slices[..dst.len().min(LEN)]); let mut limit = self.limit; for (i, (dst, slice)) in dst[..cnt].iter_mut().zip(slices.iter()).enumerate() { if let Some(buf) = slice.get(..limit) {