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