Skip to content

Commit 76b19e6

Browse files
committed
perf: improve BufList::copy_to_bytes if len == remaining
1 parent 33ea848 commit 76b19e6

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

http-body-util/src/util.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,15 @@ impl<T: Buf> Buf for BufList<T> {
8282
}
8383
Some(front) if front.remaining() > len => front.copy_to_bytes(len),
8484
_ => {
85-
assert!(len <= self.remaining(), "`len` greater than remaining");
85+
let rem = self.remaining();
86+
assert!(len <= rem, "`len` greater than remaining");
8687
let mut bm = BytesMut::with_capacity(len);
87-
bm.put(self.take(len));
88+
if rem == len {
89+
// .take() costs a lot more, so skip it if we don't need it
90+
bm.put(self);
91+
} else {
92+
bm.put(self.take(len));
93+
}
8894
bm.freeze()
8995
}
9096
}

0 commit comments

Comments
 (0)