messagepack_core/encode/
bool.rs

1//! Boolean encoders.
2
3use super::{Encode, Result};
4use crate::{formats::Format, io::IoWrite};
5
6impl<W: IoWrite> Encode<W> for bool {
7    fn encode(&self, writer: &mut W) -> Result<usize, <W as IoWrite>::Error> {
8        match self {
9            true => {
10                writer.write(&Format::True.as_slice())?;
11                Ok(1)
12            }
13            false => {
14                writer.write(&Format::False.as_slice())?;
15                Ok(1)
16            }
17        }
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24    use rstest::rstest;
25
26    #[rstest]
27    #[case(true,[0xc3])]
28    #[case(false,[0xc2])]
29    fn encode_bool<V: Encode<Vec<u8>>, E: AsRef<[u8]> + Sized>(
30        #[case] value: V,
31        #[case] expected: E,
32    ) {
33        let expected = expected.as_ref();
34
35        let mut buf = vec![];
36        let n = value.encode(&mut buf).unwrap();
37        assert_eq!(buf, expected);
38        assert_eq!(n, expected.len());
39    }
40}