messagepack_core/encode/
bool.rs1use 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
21impl<W> Encode<W> for core::sync::atomic::AtomicBool
22where
23 W: IoWrite,
24{
25 fn encode(&self, writer: &mut W) -> Result<usize, W::Error> {
26 self.load(core::sync::atomic::Ordering::Relaxed)
27 .encode(writer)
28 }
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34 use rstest::rstest;
35
36 #[rstest]
37 #[case(true,[0xc3])]
38 #[case(false,[0xc2])]
39 fn encode_bool<V: Encode<Vec<u8>>, E: AsRef<[u8]> + Sized>(
40 #[case] value: V,
41 #[case] expected: E,
42 ) {
43 let expected = expected.as_ref();
44
45 let mut buf = vec![];
46 let n = value.encode(&mut buf).unwrap();
47 assert_eq!(buf, expected);
48 assert_eq!(n, expected.len());
49 }
50}