moq_transfork/coding/
size.rs

1use bytes::{buf::UninitSlice, Buf, BufMut};
2
3// A BufMut implementation that only counts the size of the buffer
4#[derive(Default)]
5pub struct Sizer {
6	pub size: usize,
7	buf: [u8; 16],
8}
9
10unsafe impl BufMut for Sizer {
11	unsafe fn advance_mut(&mut self, cnt: usize) {
12		self.size += cnt;
13	}
14
15	fn chunk_mut(&mut self) -> &mut UninitSlice {
16		UninitSlice::new(&mut self.buf)
17	}
18
19	fn remaining_mut(&self) -> usize {
20		usize::MAX
21	}
22
23	fn has_remaining_mut(&self) -> bool {
24		true
25	}
26
27	fn put<T: Buf>(&mut self, mut src: T) {
28		self.size += src.remaining();
29		src.advance(src.remaining());
30	}
31
32	fn put_bytes(&mut self, _val: u8, cnt: usize) {
33		self.size += cnt;
34	}
35
36	fn put_f32(&mut self, _val: f32) {
37		self.size += 4;
38	}
39
40	fn put_f32_le(&mut self, _: f32) {
41		self.size += 4
42	}
43
44	fn put_f32_ne(&mut self, _: f32) {
45		self.size += 4
46	}
47
48	fn put_f64(&mut self, _: f64) {
49		self.size += 8
50	}
51
52	fn put_f64_le(&mut self, _: f64) {
53		self.size += 8
54	}
55
56	fn put_f64_ne(&mut self, _: f64) {
57		self.size += 8
58	}
59
60	fn put_i128(&mut self, _: i128) {
61		self.size += 16
62	}
63
64	fn put_i128_le(&mut self, _: i128) {
65		self.size += 16
66	}
67
68	fn put_i128_ne(&mut self, _: i128) {
69		self.size += 16
70	}
71
72	fn put_i16(&mut self, _: i16) {
73		self.size += 2
74	}
75
76	fn put_i16_le(&mut self, _: i16) {
77		self.size += 2
78	}
79
80	fn put_i16_ne(&mut self, _: i16) {
81		self.size += 2
82	}
83
84	fn put_i32(&mut self, _: i32) {
85		self.size += 4
86	}
87
88	fn put_i32_le(&mut self, _: i32) {
89		self.size += 4
90	}
91
92	fn put_i32_ne(&mut self, _: i32) {
93		self.size += 4
94	}
95
96	fn put_i64(&mut self, _: i64) {
97		self.size += 8
98	}
99
100	fn put_i64_le(&mut self, _: i64) {
101		self.size += 8
102	}
103
104	fn put_i64_ne(&mut self, _: i64) {
105		self.size += 8
106	}
107
108	fn put_i8(&mut self, _: i8) {
109		self.size += 1
110	}
111
112	fn put_int(&mut self, _: i64, nbytes: usize) {
113		self.size += nbytes
114	}
115
116	fn put_int_le(&mut self, _: i64, nbytes: usize) {
117		self.size += nbytes
118	}
119
120	fn put_int_ne(&mut self, _: i64, nbytes: usize) {
121		self.size += nbytes
122	}
123
124	fn put_slice(&mut self, src: &[u8]) {
125		self.size += src.len();
126	}
127
128	fn put_u128(&mut self, _: u128) {
129		self.size += 16
130	}
131
132	fn put_u128_le(&mut self, _: u128) {
133		self.size += 16
134	}
135
136	fn put_u128_ne(&mut self, _: u128) {
137		self.size += 16
138	}
139
140	fn put_u16(&mut self, _: u16) {
141		self.size += 2
142	}
143
144	fn put_u16_le(&mut self, _: u16) {
145		self.size += 2
146	}
147
148	fn put_u16_ne(&mut self, _: u16) {
149		self.size += 2
150	}
151
152	fn put_u32(&mut self, _: u32) {
153		self.size += 4
154	}
155
156	fn put_u32_le(&mut self, _: u32) {
157		self.size += 4
158	}
159
160	fn put_u32_ne(&mut self, _: u32) {
161		self.size += 4
162	}
163
164	fn put_u64(&mut self, _: u64) {
165		self.size += 8
166	}
167
168	fn put_u64_le(&mut self, _: u64) {
169		self.size += 8
170	}
171
172	fn put_u64_ne(&mut self, _: u64) {
173		self.size += 8
174	}
175
176	fn put_u8(&mut self, _: u8) {
177		self.size += 1
178	}
179
180	fn put_uint(&mut self, _: u64, nbytes: usize) {
181		self.size += nbytes
182	}
183
184	fn put_uint_le(&mut self, _: u64, nbytes: usize) {
185		self.size += nbytes
186	}
187
188	fn put_uint_ne(&mut self, _: u64, nbytes: usize) {
189		self.size += nbytes
190	}
191
192	// TODO
193	// fn writer(self) -> bytes::buf::Writer<Self> {
194	// fn chain_mut<U: BufMut>(self, next: U) -> bytes::buf::Chain<Self, U>
195	// fn limit(self, limit: usize) -> bytes::buf::Limit<Self>
196}