Skip to content

Commit 0e7cfa8

Browse files
committed
Issue #187: Fixing the serializer for ValueOrRange
1 parent a9aba5d commit 0e7cfa8

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

sim-lib/src/serializers.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,25 @@ pub mod serde_node_id {
4747

4848
pub mod serde_value_or_range {
4949
use super::*;
50-
use serde::de::Error;
50+
use serde::{de::Error, ser::SerializeTuple};
5151

5252
use crate::ValueOrRange;
5353

5454
pub fn serialize<S, T>(x: &ValueOrRange<T>, serializer: S) -> Result<S::Ok, S::Error>
5555
where
5656
S: serde::Serializer,
5757
T: std::fmt::Display,
58+
T: serde::Serialize,
5859
{
59-
serializer.serialize_str(&match x {
60-
ValueOrRange::Value(p) => p.to_string(),
61-
ValueOrRange::Range(x, y) => format!("[{}, {}]", x, y),
62-
})
60+
match x {
61+
ValueOrRange::Value(p) => serializer.serialize_some(p),
62+
ValueOrRange::Range(x, y) => {
63+
let mut tup = serializer.serialize_tuple(2)?;
64+
tup.serialize_element(x)?;
65+
tup.serialize_element(y)?;
66+
tup.end()
67+
},
68+
}
6369
}
6470

6571
pub fn deserialize<'de, D, T>(deserializer: D) -> Result<ValueOrRange<T>, D::Error>

0 commit comments

Comments
 (0)