lilliput_core/encoder/
bool.rs1use crate::{binary, error::Result, header::BoolHeader, io::Write, value::BoolValue};
2
3use super::Encoder;
4
5impl<W> Encoder<W>
6where
7 W: Write,
8{
9 #[inline]
13 pub fn encode_bool(&mut self, value: bool) -> Result<()> {
14 let header = self.header_for_bool(value);
15 self.encode_bool_header(&header)
16 }
17
18 #[inline]
20 pub fn encode_bool_value(&mut self, value: &BoolValue) -> Result<()> {
21 self.encode_bool(value.0)
22 }
23
24 #[inline]
28 pub fn encode_bool_header(&mut self, header: &BoolHeader) -> Result<()> {
29 let mut byte = BoolHeader::TYPE_BITS;
30
31 byte |= binary::bits_if(BoolHeader::VALUE_BIT, header.value());
32
33 #[cfg(feature = "tracing")]
34 tracing::debug!(
35 byte = crate::binary::fmt_byte(byte),
36 is_compact = true,
37 value = header.value()
38 );
39
40 self.push_byte(byte)
41 }
42
43 #[inline]
45 pub fn header_for_bool(&self, value: bool) -> BoolHeader {
46 BoolHeader::new(value)
47 }
48}