1use crate::mem;
2
3use bytes::{Buf, Bytes, BytesMut};
4
5use core::ops::{RangeFrom, RangeFull, RangeTo, RangeToInclusive};
6
7impl_take_range! {
8 <RangeFull> for Bytes {
9 #[inline]
10 fn take_range(&mut self, _range) {
11 self.split_off(0)
12 }
13 #[inline]
14 fn remove_range(&mut self, _range) {
15 self.clear()
16 }
17 }
18 <RangeFull> for BytesMut {
19 #[inline]
20 fn take_range(&mut self, _range) {
21 self.split()
22 }
23 #[inline]
24 fn remove_range(&mut self, _range) {
25 self.clear()
26 }
27 }
28 <RangeFrom<usize>> for Bytes {
29 #[inline]
30 fn take_range(&mut self, range) {
31 self.split_off(range.start)
32 }
33 #[inline]
34 fn remove_range(&mut self, range) {
35 self.truncate(range.start)
36 }
37 }
38 <RangeFrom<usize>> for BytesMut {
39 #[inline]
40 fn take_range(&mut self, range) {
41 self.split_off(range.start)
42 }
43 #[inline]
44 fn remove_range(&mut self, range) {
45 self.truncate(range.start)
46 }
47 }
48 <RangeTo<usize>> for Bytes {
49 #[inline]
50 fn take_range(&mut self, range) {
51 self.split_to(range.end)
52 }
53 #[inline]
54 fn remove_range(&mut self, range) {
55 self.advance(range.end)
56 }
57 }
58 <RangeTo<usize>> for BytesMut {
59 #[inline]
60 fn take_range(&mut self, range) {
61 self.split_to(range.end)
62 }
63 #[inline]
64 fn remove_range(&mut self, range) {
65 self.advance(range.end)
66 }
67 }
68 <RangeToInclusive<usize>> for Bytes {
69 #[inline]
70 fn take_range(&mut self, range) {
71 self.take_range(mem::convert_inclusive_range(range))
72 }
73 #[inline]
74 fn remove_range(&mut self, range) {
75 self.remove_range(mem::convert_inclusive_range(range))
76 }
77 }
78 <RangeToInclusive<usize>> for BytesMut {
79 #[inline]
80 fn take_range(&mut self, range) {
81 self.take_range(mem::convert_inclusive_range(range))
82 }
83 #[inline]
84 fn remove_range(&mut self, range) {
85 self.remove_range(mem::convert_inclusive_range(range))
86 }
87 }
88}