Skip to content

Commit 283a68b

Browse files
committed
Support serializing bool in map keys
1 parent 58dd8d9 commit 283a68b

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/ser.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,8 +827,21 @@ where
827827
type SerializeStruct = Impossible<(), Error>;
828828
type SerializeStructVariant = Impossible<(), Error>;
829829

830-
fn serialize_bool(self, _value: bool) -> Result<()> {
831-
Err(key_must_be_a_string())
830+
fn serialize_bool(self, value: bool) -> Result<()> {
831+
tri!(self
832+
.ser
833+
.formatter
834+
.begin_string(&mut self.ser.writer)
835+
.map_err(Error::io));
836+
tri!(self
837+
.ser
838+
.formatter
839+
.write_bool(&mut self.ser.writer, value)
840+
.map_err(Error::io));
841+
self.ser
842+
.formatter
843+
.end_string(&mut self.ser.writer)
844+
.map_err(Error::io)
832845
}
833846

834847
fn serialize_i8(self, value: i8) -> Result<()> {

src/value/ser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,8 @@ impl serde::Serializer for MapKeySerializer {
483483
value.serialize(self)
484484
}
485485

486-
fn serialize_bool(self, _value: bool) -> Result<String> {
487-
Err(key_must_be_a_string())
486+
fn serialize_bool(self, value: bool) -> Result<String> {
487+
Ok(value.to_string())
488488
}
489489

490490
fn serialize_i8(self, value: i8) -> Result<String> {

0 commit comments

Comments
 (0)