messagepack_core/encode/
bool.rs

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