musli_core/en/
entries_encoder.rs1use crate::Context;
2
3use super::{Encode, Encoder};
4
5pub trait EntriesEncoder {
13 type Cx: Context<Error = Self::Error>;
15 type Error;
17 type Mode: 'static;
19 type EncodeEntryKey<'this>: Encoder<Cx = Self::Cx, Error = Self::Error, Mode = Self::Mode>
21 where
22 Self: 'this;
23 type EncodeEntryValue<'this>: Encoder<Cx = Self::Cx, Error = Self::Error, Mode = Self::Mode>
25 where
26 Self: 'this;
27
28 fn cx(&self) -> Self::Cx;
30
31 #[must_use = "Encoders must be consumed"]
33 fn encode_entry_key(&mut self) -> Result<Self::EncodeEntryKey<'_>, Self::Error>;
34
35 #[must_use = "Encoders must be consumed"]
37 fn encode_entry_value(&mut self) -> Result<Self::EncodeEntryValue<'_>, Self::Error>;
38
39 fn finish_entries(self) -> Result<(), Self::Error>;
41
42 #[inline]
44 fn insert_entry<K, V>(&mut self, key: K, value: V) -> Result<(), Self::Error>
45 where
46 K: Encode<Self::Mode>,
47 V: Encode<Self::Mode>,
48 {
49 self.encode_entry_key()?.encode(key)?;
50 self.encode_entry_value()?.encode(value)?;
51 Ok(())
52 }
53}