| 551 | ok_error_end!(); |
| 552 | #[inline(always)] |
| 553 | fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<()> |
| 554 | where |
| 555 | T: Serialize, |
| 556 | { |
| 557 | // Safety: Make sure safe code doesn't lie about len and cause UB since we've only reserved len keys/values. |
| 558 | self.len = self.len.checked_sub(1).expect("length mismatch"); |
| 559 | // Safety: Make sure serialize_value is called at most once after each serialize_key. |
| 560 | self.key_serialized = true; |
| 561 | key.serialize(EncoderWrapper { |
| 562 | lazy: &mut self.encoders.0, |
| 563 | index_alloc: &mut *self.index_alloc, |
| 564 | }) |
| 565 | } |
| 566 | |
| 567 | #[inline(always)] |
| 568 | fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<()> |