diff --git a/src/database/de.rs b/src/database/de.rs index efb117b52..f904e1500 100644 --- a/src/database/de.rs +++ b/src/database/de.rs @@ -288,8 +288,14 @@ impl<'a, 'de: 'a> de::Deserializer<'de> for &'a mut Deserializer<'de> { } #[cfg_attr(unabridged, tracing::instrument(level = "trace", skip_all))] - fn deserialize_bool>(self, _visitor: V) -> Result { - unhandled!("deserialize bool not implemented") + fn deserialize_bool>(self, visitor: V) -> Result { + let byte = self + .buf + .get(self.pos) + .ok_or(Self::Error::SerdeDe("bool buffer underflow".into()))?; + self.inc_pos(1); + + visitor.visit_bool(*byte != 0x00) } #[cfg_attr(unabridged, tracing::instrument(level = "trace", skip_all))] diff --git a/src/database/ser.rs b/src/database/ser.rs index 2e1a2cb0f..a198bc1c0 100644 --- a/src/database/ser.rs +++ b/src/database/ser.rs @@ -297,8 +297,8 @@ impl ser::Serializer for &mut Serializer<'_, W> { fn serialize_u8(self, v: u8) -> Result { self.write(&[v]) } - fn serialize_bool(self, _v: bool) -> Result { - unhandled!("serialize bool not implemented") + fn serialize_bool(self, v: bool) -> Result { + if v { self.write(&[0x01]) } else { self.write(&[0x00]) } } fn serialize_unit(self) -> Result { unhandled!("serialize unit not implemented") }