| 14 | impl Encoder<usize> for LengthEncoder { |
| 15 | #[inline(always)] |
| 16 | fn encode(&mut self, &v: &usize) { |
| 17 | unsafe { |
| 18 | let end_ptr = self.small.end_ptr(); |
| 19 | if v < 255 { |
| 20 | *end_ptr = v as u8; |
| 21 | } else { |
| 22 | #[cold] |
| 23 | #[inline(never)] |
| 24 | unsafe fn encode_slow(end_ptr: *mut u8, large: &mut IntEncoder<usize>, v: usize) { |
| 25 | *end_ptr = 255; |
| 26 | large.reserve(NonZeroUsize::new(1).unwrap()); |
| 27 | large.encode(&v); |
| 28 | } |
| 29 | encode_slow(end_ptr, &mut self.large, v); |
| 30 | } |
| 31 | self.small.increment_len(); |
| 32 | } |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | pub trait Len { |