rawcode/coding/
boolean.rs

1//! Implements boolean coding
2
3use crate::{
4    coding::{RawcodeConstSize, RawcodeDecode, RawcodeEncode},
5    error::Error,
6};
7
8impl RawcodeConstSize for bool {
9    const SIZE: usize = u8::SIZE;
10}
11impl RawcodeDecode for bool {
12    fn decode(buf: &[u8]) -> Result<Self, Error> {
13        let value = u8::decode(buf)?;
14        match value {
15            0x00 => Ok(false),
16            0xff => Ok(true),
17            _ => Err(e!("Invalid boolean")),
18        }
19    }
20}
21impl RawcodeEncode for bool {
22    fn encode(&self, buf: &mut [u8]) -> Result<(), Error> {
23        let value = match self {
24            false => 0x00u8,
25            true => 0xffu8,
26        };
27        value.encode(buf)
28    }
29}