lilliput_core/decoder/
null.rs

1use crate::{error::Result, header::NullHeader, marker::Marker, value::NullValue};
2
3use super::{Decoder, Read};
4
5impl<'r, R> Decoder<R>
6where
7    R: Read<'r>,
8{
9    // MARK: - Value
10
11    /// Decodes a null value.
12    #[cfg_attr(feature = "tracing", tracing::instrument(skip_all))]
13    pub fn decode_null(&mut self) -> Result<()> {
14        self.decode_null_header()?;
15
16        Ok(())
17    }
18
19    /// Decodes a null value, as a `NullValue`.
20    #[cfg_attr(feature = "tracing", tracing::instrument(skip_all))]
21    pub fn decode_null_value(&mut self) -> Result<NullValue> {
22        self.decode_null().map(|_| NullValue)
23    }
24
25    // MARK: - Header
26
27    /// Decodes a null value's header.
28    #[cfg_attr(feature = "tracing", tracing::instrument(skip_all))]
29    pub fn decode_null_header(&mut self) -> Result<NullHeader> {
30        #[allow(unused_variables)]
31        let byte = self.pull_byte_expecting(Marker::Null)?;
32
33        #[cfg(feature = "tracing")]
34        tracing::debug!(byte = crate::binary::fmt_byte(byte),);
35
36        Ok(NullHeader)
37    }
38
39    // MARK: - Skip
40
41    /// Skips the null value for a given `header`.
42    #[cfg_attr(feature = "tracing", tracing::instrument(skip_all))]
43    pub fn skip_null_value_of(&mut self, header: NullHeader) -> Result<()> {
44        let _ = header;
45
46        Ok(())
47    }
48
49    // MARK: - Body
50
51    /// Decodes null value for a given `header`, as a `NullValue`.
52    #[cfg_attr(feature = "tracing", tracing::instrument(skip_all))]
53    pub fn decode_null_value_of(&mut self, header: NullHeader) -> Result<NullValue> {
54        let _ = header;
55
56        Ok(NullValue)
57    }
58}