Like [`encode`], but saves allocations between calls.
(&'a mut self, t: &T)
| 81 | impl crate::buffer::Buffer { |
| 82 | /// Like [`encode`], but saves allocations between calls. |
| 83 | pub fn encode<'a, T: Encode + ?Sized>(&'a mut self, t: &T) -> &'a [u8] { |
| 84 | // Safety: Encoders don't have any lifetimes (they don't contain T either). |
| 85 | let encoder = unsafe { self.registry.get_non_static::<T::Encoder>() }; |
| 86 | encoder.reserve(NonZeroUsize::new(1).unwrap()); |
| 87 | encode_inline_never(encoder, t); |
| 88 | self.out.clear(); |
| 89 | encoder.collect_into(&mut self.out); |
| 90 | self.out.as_slice() |
| 91 | } |
| 92 | |
| 93 | /// Like [`decode`], but saves allocations between calls. |
| 94 | pub fn decode<'a, T: Decode<'a>>(&mut self, mut bytes: &'a [u8]) -> Result<T, Error> { |
no test coverage detected