From 63ba378bf721076deccf191e9201d30819b6e66a Mon Sep 17 00:00:00 2001 From: mars Date: Wed, 25 May 2022 17:47:59 -0600 Subject: [PATCH] Impl bool encoding --- protocol/src/lib.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/protocol/src/lib.rs b/protocol/src/lib.rs index 471c864..32b6336 100644 --- a/protocol/src/lib.rs +++ b/protocol/src/lib.rs @@ -11,6 +11,19 @@ pub trait Decode: Sized { fn decode(reader: &mut impl Read) -> IoResult; } +// TODO: raw bool encoding is inefficient and should be replaced with bitsets. +impl Encode for bool { + fn encode(&self, writer: &mut impl Write) -> IoResult<()> { + writer.write_u8(if *self { 1 } else { 0 }) + } +} + +impl Decode for bool { + fn decode(reader: &mut impl Read) -> IoResult { + Ok(reader.read_u8()? != 0) + } +} + impl Encode for u8 { fn encode(&self, writer: &mut impl Write) -> IoResult<()> { writer.write_u8(*self)