rawcode/coding/
boolean.rs1use 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}